RabbitMQ - v3.9.21

RabbitMQ 3.9.21 is a maintenance release in the 3.9.x release series.

Please refer to the Upgrading to 3.9 section from v3.9.0 release notes if upgrading from a version prior to 3.9.0.

This release requires at least Erlang 23.2, and supports Erlang 24. RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Server


  • Optimization: internal message GUID is no longer generated for quorum queues and streams, as they
    are specific to classic queues.

GitHub issue: #5005

  • Two more AMQP 1.0 connection lifecycle events are now logged.

GitHub issue: #4984

  • TLS configuration for inter-node stream replication connections now can
    use function references and definitions.

GitHub issue: #4991

  • Stream protocol connection logging is now less verbose.

GitHub issue: #5039

  • Max stream segment size is now limited to 3 GiB to avoid a potential stream position overflow.

GitHub issue: #5035

  • Logging messages that use microseconds now use "us" for the SI symbol to be compatible with more

GitHub issue: #5127

Bug Fixes

  • Channels on connections to mixed clusters that had 3.8 nodes in them could run into
    an exception.

GitHub issue: #5141

  • Inter-node cluster link statistics did not have any data when TLS was enabled for them.

GitHub issue: #4981

  • Quorum queues now correctly propagate errors when a basic.get (polling consumption) operation hits
    a timeout.

Contributed by Ayanda @Ayanda-D Dube.

GitHub issue: #5109

  • Stream consumer that used AMQP 0-9-1 instead of a stream protocol client, and disconnected,
    leaked a file handle.

GitHub issue: #5088

  • Max frame size and client heartbeat parameters for RabbitMQ stream clients were not correctly
    set when taken from rabbitmq.conf.

GitHub issue: #5136

  • Removed a duplicate exchange decorator set operation.

Contributed by Péter @gomoripeti Gömöri.

GitHub issue: #4964

Consistent Hashing Exchange Plugin

Bug Fixes

  • Node restarts could result in a hashing ring inconsistency.

This required a potentially breaking change: this exchange type
now only allows for one binding between an exchange and a queue (or another exchange).
All subsequent binding operations between them will be ignored, so "first write wins".

This is a natural topology for this plugin, and enforcing it helps avoid a set of
potential issues with concurrent node restarts and client operations that affect
consistent hash ring state.

GitHub issue: #3386

Consul Peer Discovery Plugin


  • Consul peer discovery now supports client-side TLS options, much like its Kubernetes and etcd peers.

``` ini
cluster_formation.consul.scheme = https
# this assumes that Consul uses port 8501 for HTTPS clients
cluster_formation.consul.port = 8501

cluster_formation.consul.ssl_options.cacertfile = /path/to/consul/generated/ca_certificate.pem
cluster_formation.consul.ssl_options.certfile = /path/to/client/certificate.pem
cluster_formation.consul.ssl_options.keyfile = /path/to/client/client_key.pem

GitHub issue: #5116

Source Code Archives

To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.9.21.tar.xz
instead of the source tarball produced by GitHub.


July 9, 2022, 8:18 p.m.
RabbitMQ 3.9.21
Register or login to:
  • 🔍View and search all RabbitMQ releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google