RabbitMQ Core vs Stream Plugin
Overview
This section covers the differences between RabbitMQ core and the stream plugin. Stream core designates stream features in the broker with only default plugins activated and through protocols like AMQP 0.9.1, AMQP 1.0, MQTT, and STOMP.
Feature Matrix
Feature | RabbitMQ Core | Stream Plugin |
---|---|---|
Activation | Built-in | Must be activated |
Protocol | AMQP 0.9.1 and AMQP 1.0 | RabbitMQ Stream |
Clients | AMQP 0.9.1 clients (documentation). AMQP 1.0 clients (documentation) | RabbitMQ stream clients |
Port | 5672 | 5552 |
Format | Server-side AMQP 1.0 message format encoding and decoding | Client-side AMQP 1.0 message format encoding and decoding |
Sub-entry batching | Supported (uncompressed) | Supported (Java example). Clients Compression Options |
Offset tracking | Use external store | Built-in server-side support (Java example) or external store |
Publishing deduplication | Not supported | Supported (Java example) |
Super stream | Not supported | Supported |
Throughput | Hundreds of thousands per second | Millions messages per second |
TLS | Supported (default port: 5671) | Supported (default port: 5551) |
Interoperabilty
Streams store messages using the AMQP 1.0 message format.
- RabbitMQ Stream client libraries are expected to support the AMQP 1.0 message format
- The broker handles the conversion between AMQP 1.0 and AMQP 0.9.1 for AMQP 0.9.1 clients
- AMQP 0.9.1,AMQP 1.0 and stream clients can write to and read from the same stream. Sub-Entry Batching is supported without compression.
- RabbitMQ Stream supports the following section of the AMQP 1.0 message format:
- properties
- application properties
- application data
- message annotations
Stream Clients Sub-entry Batching Compression Options
The compression happens client-side. The available compression implementations:
- No compression
- Gzip
- Snappy
- LZ4
- Zstd
The table below explains what options are supported by a number of RabbitMQ Stream Protocol clients:
Client | Supported | No Compression | Gzip | Snappy | LZ4 | Zstd |
---|---|---|---|---|---|---|
Java | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
.NET | ✅ | ✅ | ✅ | ✅ via interface | ✅ via interface | ✅ via interface |
Go | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Python | ✅ | ✅ | ✅ | ✅ via interface | ✅ via interface | ✅ via interface |
NodeJS | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Rust | ❌ | ❌ | ❌ | ❌ | ❌ |