Skip to main content
Version: Next

Which protocols does RabbitMQ support?

RabbitMQ supports several messaging protocols, directly and through the use of plugins. This page describes the supported protocols and helps differentiate between them.

AMQP 0-9-1

RabbitMQ was originally developed to support AMQP 0-9-1. As such this protocol has been the first "core" protocol supported by the broker. We have extended AMQP 0-9-1 in various ways.

AMQP 0-9-1 is a binary protocol, and defines quite strong messaging semantics. For clients it's a reasonably easy protocol to implement, and as such there are a large number of client libraries available for many different programming languages and environments.

RabbitMQ tutorials are available for AMQP 0-9-1.

AMQP 1.0

AMQP 1.0 is a more modern protocol. It is an ISO/IEC 19464 and OASIS standard.

Despite the name, AMQP 1.0 is a very different protocol from AMQP 0-9-1 / 0-9 / 0-8, sharing nothing at the wire level. AMQP 1.0 imposes fewer semantic requirements and is therefore supported by more message brokers. The protocol is more complex than AMQP 0-9-1, and there are fewer client implementations.

AMQP 1.0 has become a "core" protocol in RabbitMQ 4.0.

RabbitMQ Streams

The RabbitMQ Streams protocol allows communicating with streams at very high throughput. RabbitMQ supports the streams protocol natively via a plugin.

RabbitMQ tutorials are available for the RabbitMQ Streams protocol.

MQTT

MQTT is a binary protocol emphasising lightweight publish / subscribe messaging, targeted towards clients in constrained devices. It has well defined messaging semantics for publish / subscribe, but not for other messaging idioms.

RabbitMQ supports MQTT versions 3.1, 3.1.1, and 5.0 natively via a plugin.

STOMP

STOMP is a text-based messaging protocol emphasising (protocol) simplicity. It defines little in the way of messaging semantics, but is easy to implement and very easy to implement partially (it's the only protocol that can be used by hand over telnet).

RabbitMQ supports STOMP (all current versions) via a plugin by proxying internally over AMQP 0-9-1.

HTTP and WebSockets

While HTTP is not really a messaging protocol, RabbitMQ can transmit messages over HTTP in three ways:

  • The Web STOMP plugin supports STOMP messaging to the browser using WebSockets.
  • The Web MQTT plugin supports MQTT messaging to the browser using WebSockets.
  • The management plugin supports a simple HTTP API to send and receive messages. This is primarily intended for diagnostic purposes but can be used for low volume messaging without reliable delivery.