Skip to main content
Version: Next

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

FeatureRabbitMQ CoreStream Plugin
ActivationBuilt-inMust be activated
ProtocolAMQP 0.9.1 and AMQP 1.0RabbitMQ Stream
ClientsAMQP 0.9.1 clients (documentation). AMQP 1.0 clients (documentation)RabbitMQ stream clients
Port56725552
FormatServer-side AMQP 1.0 message format encoding and decodingClient-side AMQP 1.0 message format encoding and decoding
Sub-entry batchingSupported (uncompressed)Supported (Java example). Clients Compression Options
Offset trackingUse external storeBuilt-in server-side support (Java example) or external store
Publishing deduplicationNot supportedSupported (Java example)
Super streamNot supportedSupported
ThroughputHundreds of thousands per secondMillions messages per second
TLSSupported (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:

ClientSupportedNo CompressionGzipSnappyLZ4Zstd
Java
.NETvia interfacevia interfacevia interface
Go
Pythonvia interfacevia interfacevia interface
NodeJS
Rust