Streaming Text Orientated Messaging Protocol
Encyclopedia
Streaming Text Oriented Message Protocol (STOMP), formerly known as TTMP, is a simple text-based protocol, designed for working with Message Oriented Middleware. It provides an interoperable wire format that allows STOMP clients to talk with any Message Broker
supporting the protocol. It is thus language-agnostic, meaning a broker developed for one language or platform can receive communications from client software developed in another language.
using the following commands:
Communication between client and server is through a "frame" consisting of a number of lines. The first line contains the command, followed by headers in the form: (one per line), followed by a blank line and then the body content, ending in a null character
. Communication between server and client is through a MESSAGE, RECEIPT or ERROR frame with a similar format of headers and body content.
STOMP is similar to the OpenWire (binary protocol), used by the Apache ActiveMQ broker.
products that support STOMP:
Message broker
Message broker is an intermediary program which translates the language of a system from one internationally recognized language to another by way of a telecommunications medium.-Pattern:...
supporting the protocol. It is thus language-agnostic, meaning a broker developed for one language or platform can receive communications from client software developed in another language.
Overview
The protocol is broadly similar to HTTP, and works over TCPTransmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...
using the following commands:
- CONNECT
- SEND
- SUBSCRIBE
- UNSUBSCRIBE
- BEGIN
- COMMIT
- ABORT
- ACK
- DISCONNECT
Communication between client and server is through a "frame" consisting of a number of lines. The first line contains the command, followed by headers in the form
Null character
The null character , abbreviated NUL, is a control character with the value zero.It is present in many character sets, including ISO/IEC 646 , the C0 control code, the Universal Character Set , and EBCDIC...
. Communication between server and client is through a MESSAGE, RECEIPT or ERROR frame with a similar format of headers and body content.
STOMP is similar to the OpenWire (binary protocol), used by the Apache ActiveMQ broker.
Implementations
These are some MOMMessage-oriented middleware
Message-oriented middleware is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple...
products that support STOMP:
- Apache ActiveMQ, also known as Fuse Message Broker
- Erlstomp (an open source server implementation in Erlang)
- HornetQ
- MorbidQ (STOMP server using PythonPython (programming language)Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
+ Twisted) - Net::STOMP::Client (an open source client implementation in PerlPerlPerl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
) - ocamlmq (A lightweight STOMP message broker, written in OCaml)
- Open Message Queue (OpenMQ)
- POE::Component::MessageQueue (a server implementation in Perl)
- RabbitMQ (AMQP message broker, written in Erlang, which has experimental support for STOMP)
- Ruby server, also known as stompserver
- stomp.erl (an open source client implementation in Erlang)
- Stomp.py (an open source client implementation in PythonPythonThe Pythonidae, commonly known simply as pythons, from the Greek word python-πυθων, are a family of non-venomous snakes found in Africa, Asia and Australia. Among its members are some of the largest snakes in the world...
)