Streaming Text Oriented Messaging Protocol
This article needs additional citations for verification. (January 2017) |
Communication protocol | |
Abbreviation | STOMP |
---|---|
Purpose | Message-oriented middleware |
Introduction | |
OSI layer | Application layer (Layer 7) |
Website | stomp |
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 (MOM). It provides an interoperable wire format that allows STOMP clients to talk with any message broker supporting the protocol.
Overview
[edit]The protocol is broadly similar to HTTP, and works over TCP using the following commands:
- CONNECT
- SEND
- SUBSCRIBE
- UNSUBSCRIBE
- BEGIN
- COMMIT
- ABORT
- ACK
- NACK
- 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 <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.
Example
[edit]SEND destination:/queue/a content-type:text/plain hello queue a ^@
Implementations
[edit]These are some MOM products that support STOMP:
- Apache ActiveMQ,
- Fuse Message Broker
- HornetQ
- Open Message Queue (OpenMQ)
- RabbitMQ (message broker, has support for STOMP)
- syslog-ng through its STOMP destination plugin
A list of implementations is also maintained on the STOMP web site.
STOMP is also supported by the Spring Framework in module org.springframework:spring-websocket
. [1]