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.