Streaming Text Oriented Messaging Protocol
Simple (or 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 programming language or platform can receive communications from client software developed in another language.
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 <key>: <value> (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.
These are some MOM products that support STOMP:
- Apache ActiveMQ, also known as Fuse Message Broker
- Net::STOMP::Client (an open source client implementation in Perl)
- ocamlmq (A lightweight STOMP message broker, written in OCaml)
- Open Message Queue (OpenMQ)
- POE::Component::MessageQueue (a server implementation in Perl)
- RabbitMQ (message broker, has support for STOMP)
- Ruby server, also known as stompserver
- stomp.erl (an open source client implementation in Erlang)
- syslog-ng through its STOMP destination plugin
- Stomp.py (an open source client implementation in Python)
- tStomp (an open source client implementation in Tcl)
A list of implementations is also maintained on the STOMP web site.