Stream queues are divided into two sections:
New built-in queue type. Available with RabbitMQ 3.9. It is possible to use the standard AMQP 0.9.1 clients to read/write messages. See the documentation and here some example.
Stream queues store the messages in AMQP 1.0 format. With a AMQP 0.9.1 client:
- Publish: it pushes 0.9.1 messages and converted into 1.0 and stored.
- Consumers: converted from 1.0 to 0.9.1 and send to the conumsers
Can be enabled with:
rabbitmq-plugins enable rabbitmq_stream
rabbitmq-plugins enable rabbitmq_stream_management
With the plugin is possible to use the RabbitMQ Stream protocol with dedicated clients:
Feature | Stream-Core | Stream-Plugin |
---|---|---|
Activation | Built-in | Must be enabled |
Protocol | AMQP 0.9.1 | RabbitMQ Stream |
Client library | AMQP 0.9.1 | RabbitMQ Stream |
Port | 5672 | 5552 |
Format | consume AMQP 0.9.1/1.0 messages | consume AMQP 0.9.1/1.0 messages |
Sub-Entry batching | Not supported | Supported |
Offset tracking | Use external store | Built-in server side |
Publishing deduplication | Not supported | Supported |
Throughput | Hundreds of thousands per second | Millions messages per second |
TLS | Supported (5671-Port) | Supported (5551-Port) |
See here for all the clients: https://www.rabbitmq.com/devtools.html
AMQP 0.9.1 and Stream clients can read and write to same same stream queue with some limitation:
-
Sub-Entry messages: only not compressed
-
AMQP 1.0 format only:
1. ApplicationData 2. MessageAnnotations 3. MessageProperties 4. ApplicationProperties
AmqpValue
is not supported.