Skip to content

Messaging Protocol Support in Message Brokers

A wire protocol is the set of rules for how a client and a broker exchange data over the network. When both sides share a protocol, they can work together. This is why protocol support matters when you choose a broker. For background, see the articles on Messaging and Interoperability.

MQTT is a lightweight client-server publish/subscribe protocol. Its designers made it light and simple to implement.

STOMP is a simple protocol with a text-based message format. Its design goals are simplicity and interoperability.

AMQP comes in two very different versions. AMQP 0-9-1 is binary and has strong messaging semantics. Semantics means clear rules about what each messaging operation does. AMQP 1.0 is a different protocol. It shares nothing with 0-9-1 on the wire. It asks less of a broker, so more brokers support it. It is also more complex and has fewer clients.

Brokers that support several protocols:

  • RabbitMQ supports MQTT 3.1, 3.1.1 and 5.0 natively through a plugin. Its STOMP plugin works by proxying internally over AMQP 0-9-1.
  • Apache Artemis accepts any AMQP 1.0 client. It also accepts MQTT 3.1, 3.1.1 and 5 clients.
  • The NATS server speaks MQTT 3.1.1, including delivery levels 0, 1 and 2.

Protocol handlers: Pulsar can load protocol handlers as plugins. KoP is one. It adds Kafka wire protocol support to Pulsar.

A factory has sensors that only speak MQTT. The back-office systems use another protocol. The team picks a broker that accepts MQTT directly and also offers a protocol the back-office clients support. Both sides connect to the same broker without extra translation software.

A broker that supports a protocol lets existing clients connect without changes. But support can be indirect. RabbitMQ’s STOMP plugin, for example, proxies over AMQP 0-9-1 internally. Choosing AMQP 1.0 gives you more broker choices, but it is more complex and has fewer clients than 0-9-1. Check which exact protocol versions a broker supports before you commit.

  • The document names each wire protocol that clients use to reach the broker.
  • The document states which AMQP version is meant, since 1.0 and 0-9-1 differ on the wire.
  • The document lists the supported protocol versions, such as MQTT 3.1.1 or 5.