Streaming Text Oriented Messaging Protocol
# 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 (MOM). It provides an interoperable wire format that allows STOMP clients to talk with any message broker supporting the protocol.

## Overview

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.

## Implementations

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.

