Streaming Text Oriented Messaging Protocol
Simple (or Streaming) Text Oriented Message Protocol (STOMP), ידוע בעבר בשם TTMP, הוא פרוטוקול מבוסס טקסט פשוט, מיועד לעבוד עם ההודעה מוכוונת תווכה (באנגלית: message-oriented middleware - MOM). זה מספק יכולת פעולה הדדית של פורמט פרוטוקול מקשר (wire format), שמאפשר ללקוחות STOMP לדבר עם כל מתווך הודעות שתומך בפרוטוקול. לפיכך הפרוטוקול הוא בלתי תלוי שפה, כלומר גורם תיווך (Message broker) שפותח עבור שפה תכנות או פלטפורמה אחת יכול לקבל תקשורת מתוכנת הלקוח שפותחה בשפה אחרת.
סקירה
בהרחבה, הפרוטוקול דומה ל-HTTP, ועובד על TCP באמצעות הפקודות הבאות:
- CONNECT
- SEND
- SUBSCRIBE
- UNSUBSCRIBE
- BEGIN
- COMMIT
- ABORT
- ACK
- NACK
- DISCONNECT
התקשורת בין הלקוח לבין השרת הוא באמצעות "frame" שמורכב ממספר שורות. השורה הראשונה מכילה את הפקודה, ולאחריה כותרות (headers) בתבנית <key>:<value> (כותרת אחת בכל שורה), ולאחריה שורה ריקה ואז גוף-תוכן, שמסתיים בתו null. התקשורת בין השרת והלקוח היא דרך פריים MESSAGE, RECEIPT או ERROR עם פורמט (תבנית) דומה של כותרות (headers), וגוף-תוכן.
פופולריות
בגלל ש-STOMP הוא בלתי-תלוי שפה וקל למימוש, הוא נעשה פופולרי למפתחי ומתכנני תוכנה.
מעבר לכך, STOMP הוא מבוסס טקסט פשוט, ולא מבוסס פרוטוקלים בינאריים אחרים הנמצאים בשימוש על ידי מתווכי תוכנה אחרים, ומשום כך, קשת רחבה של טכנולוגיות לקוח עובדות איתו כמו Ruby, Python, Perl וכדומה.
STOMP הוא קל למימוש אך תומך במגוון רחב של מאפייני ליבה של הודעות, כמו אימות אבטחה (authentication), מודלי הודעות (point to point, publish and subscribe), אישורי הודעה, טרנזקציות, כותרות (headers), מאפייני הודעה וכו'.
מימושים
אלה הם מספר מוצרי MOM התומכים ב-STOMP:
- Apache ActiveMQ, הידוע גם Fuse Message Broker
- Apache Apollo
- HornetQ
- Net::STOMP::Client (,ufb, קוד פתוח של תוכנת לקוח המיושם ב-Perl)
- ocamlmq (מתווך הודעות קל, נכתב ב OCaml)
- Open Message Queue (OpenMQ)
- POE::Component::MessageQueue (יישום שרת ב-Perl)
- RabbitMQ (מתווך הודעות, המכיל תמיכה ב-STOMP)
- שרת Ruby, הידוע גם בשם stompserver
- stomp.erl (קוד פתוח של תוכנת לקוח במימוש שפת Erlang)
- syslog-ng דרך תוסף STOMP destination
- Stomp.py (קוד פתוח לתוכנת לקוח במימוש שפת Python)
- tStomp (קוד פתוח לתוכנת לקוח במימוש שפת Tcl)
- רשימה של יישומים מתעדכנת גם באתר האינטרנט של STOMP
קישורים חיצוניים
- אתר האינטרנט הרשמי של Streaming Text Oriented Messaging Protocol
- אתר STOMP
31829799Streaming Text Oriented Messaging Protocol