Which protocols does RabbitMQ support?

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

AMQP 0-9-1, 0-9 and 0-8, and extensions

RabbitMQ was originally developed to support
AMQP. As such this protocol is the "core" protocol supported by
the broker. All of these variants are fairly similar to each other,
with later versions tidying up unclear or unhelpful parts of earlier
versions. 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
implementations available for many different programming
languages and environments.

If you are just looking to use RabbitMQ, we recommend using AMQP
0-9-1.

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).

MQTT

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

AMQP 1.0

Despite the name, AMQP 1.0 is a radically different protocol from
AMQP 0-9-1 / 0-9 / 0-8, sharing essentially nothing at the wire
level. AMQP 1.0 imposes far fewer semantic requirements; it is
therefore easier to add support for AMQP 1.0 to existing
brokers. The protocol is substantially more complex than AMQP 0-9-1,
and there are fewer client implementations.

HTTP

HTTP is of course not a messaging protocol. However,
RabbitMQ can transmit messages over HTTP in three ways:

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.

The Web-STOMP plugin supports STOMP
messaging to the browser, using WebSockets or one of the fallback
mechanisms supported by SockJS.

The JSON-RPC channel plugin supports
AMQP 0-9-1 messaging
over JSON-RPC to the
browser. Note that since JSON RPC is a synchronous protocol, some
parts of AMQP that depend on aysnchronous delivery to the client
are emulated by polling.