Streaming Text Oriented Messaging Protocol

{{Short description|Communications protocol}}

{{Infobox networking protocol

| title =

| logo =

| logo alt =

| image =

| image alt =

| caption =

| abbreviation = STOMP

| purpose = Message-oriented middleware

| developer =

| date = {{Start date and age| | | }}

| based on =

| influenced =

| osilayer = Application layer (Layer 7)

| ports =

| rfcs =

}}

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.{{Cite web|url=https://stomp.github.io|title=STOMP - The Simple Text Oriented Messaging Protocol|website=stomp.github.io}}{{Cite book|url=https://link.springer.com/book/10.1007/978-1-4302-4741-8|chapter-url=https://link.springer.com/chapter/10.1007/978-1-4302-4741-8_5|title=The Definitive Guide to HTML5 WebSocket|author1=Vanessa Wang |author2=Frank Salim |author3=Peter Moskovits|publisher=Apress|chapter=Using Messaging over WebSocket with STOMP|date=2013|pages=85–108 |doi=10.1007/978-1-4302-4741-8_5 |isbn=978-1-4302-4740-1 }}

Overview

The protocol is broadly similar to HTTP, and works over TCP using the following commands:{{Cite web|url=https://stomp.github.io/stomp-specification-1.2.html|title=STOMP Protocol Specification, Version 1.2|website=stomp.github.io}}

  • 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 : (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

SEND

destination:/queue/a

content-type:text/plain

hello queue a

^@

Implementations

Some message-oriented middleware products support STOMP,{{Cite web|url=https://stomp.github.io/implementations.html|title=STOMP Servers|website=stomp.github.io}} such as::

  • Apache ActiveMQ,
  • [http://fusesource.com/products/enterprise-activemq/ Fuse Message Broker]{{Cite web|url=https://developers.redhat.com/products/fuse/download|title=Red Hat Fuse - Distributed, cloud-native integration platform|website=developers.redhat.com}}
  • HornetQ
  • Open Message Queue (OpenMQ)
  • RabbitMQ{{Cite web|url=https://www.rabbitmq.com/docs/stomp|title=STOMP Plugin|website=rabbitmq.com}}
  • syslog-ng{{Cite web|url=https://syslog-ng.github.io/admin-guide/070_Destinations/280_Stomp/000_Stomp_options.html|title=syslog-ng documentation - stomp() destination options|website=syslog-ng.github.io}}
  • Spring Framework{{Cite web|url=https://docs.spring.io/spring-framework/reference/web/websocket/stomp.html|title=Spring Framework - STOMP| website=docs.spring.io}}

References