Skip to content

Releases: rabbitmq/rabbitmq-server

RabbitMQ 3.10.8

23 Sep 22:27
5b67ea2

Choose a tag to compare

RabbitMQ 3.10.8 is a maintenance release in the 3.10.x release series.

Please refer to the upgrade section from v3.10.0 release notes
if upgrading from a version prior to 3.10.0.

This release requires Erlang 24.2 and supports Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

Erlang 23 support has reached its end of support.

Starting with this release, RabbitMQ requires Erlang 24.2 or later versions. Nodes will fail to start on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Open File Handle Limit is Capped by Default on Linux, *BSD, macOS

Nodes now default to 65536 concurrent client connections instead of using the effective kernel open file handle limit.
Users who want to override this default, that is, have nodes that should support more concurrent connections and open files,
now have to perform an additional configuration step:

  • Pick a new limit value they would like to use, for instance, 100K
  • Set the maximum open file handle limit (for example, via systemd or similar tooling) for the OS user used by RabbitMQ to 100K
  • Set the ERL_MAX_PORTS environment variable to 100K

This change was introduced because of a change in several Linux distributions: they now use a default open file handle limit so high,
they cause a significant (say, 1.5 GiB) memory preallocated the Erlang runtime.

RHEL 9 and CentOS Stream 9 are examples of such distributions.
The new default comes from modern systemd.

See rabbitmq/rabbitmq-server#5684 and docker-library/rabbitmq#545
for details.

Changes Worth Mentioning

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

Core Server

Enhancements

  • When a virtual host is added, it now can be configured with default queue type.

    In part contributed by @adamncasey.

    GitHub issues: #5305, #5769

  • Free disk space monitor robustness improvements.

    GitHub issue: #5739

  • Force GC after definition import to reduce peak memory load by mostly idle
    nodes that import a lot of definitions.

    GitHub issue: #5550

  • Stopped emitting some internal events no part of the system consumes in 3.10.x.

    GitHub issue: #5737

Bug Fixes

  • Reduced log noise from exceptions connections could run into when a client
    was closing its connection end concurrently with other activity.

    GitHub issue: #5539

  • rabbitmq-env-conf.bat on Windows could fail to load when its path contained spaces.

    GitHub issue: #5542

Stream Plugin

Bug Fixes

  • Stream declaration could run into an exception when stream parameters failed validation.

    GitHub issue: #5487

Grafana Dashboards

Bug Fixes

  • Some counters on the Overview page have been moved to global counters introduced in RabbitMQ 3.9.

    GitHub issue: #5463

AMQP 1.0 Erlang Client

Bug Fixes

  • Fixed an issue with hostname verification for TLS-enabled connections.

    GitHub issue: #5531

MQTT Plugin

Enhancements

  • A way to configure an authentication timeout, much like in some other protocols RabbitMQ supports.

    Contributed by @gomoripeti.

    GitHub issue: #5755

Bug Fixes

  • Avoid an exception when MQTT client closes TCP connection before server could fully
    process a CONNECT frame sent earlier by the same client.

    GitHub issue: #5658

STOMP Plugin

Enhancements

  • A way to configure an authentication timeout, much like in some other protocols RabbitMQ supports.

    Contributed by @gomoripeti.

    GitHub issue: #5755

Windows installer

Enhancements

Dependency Upgrades

  • osiris upgraded to 1.3.1
  • prometheus upgraded to 4.9.1
  • eetcd upgraded to 0.3.6

Source Code Archives

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

RabbitMQ 3.11.0-rc.2

22 Sep 08:12
a198f47

Choose a tag to compare

RabbitMQ 3.11.0-rc.2 Pre-release
Pre-release

RabbitMQ 3.11.0-rc.2

This is a release candidate of RabbitMQ 3.11.

Highlights

This release includes several new featues and optimizations, graduates (makes mandatory) a number of feature flags,
bumps minimum required version to Erlang 25 for ARM64 CPU feature parity.

The areas that have seen the biggest improvements in this release are

  • Streams and the RabbitMQ stream protocol
  • OAuth 2 support

See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

Erlang/OTP Compatibility Notes

This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.

Upgrading to 3.11

Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.

Required

RabbitMQ 3.11.0 will require all feature flags introduced in RabbitMQ 3.8 to be enabled
before upgrading. If that is not the case, the upgrade process will not proceed.

Mixed version cluster compatibility

RabbitMQ 3.11.0 nodes can run alongside 3.10.x nodes. 3.11.x-specific features can only be made available when all nodes in the cluster
upgrade to 3.11.0 or any other patch release in the series.

While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.11.0, these irregularities will go away.

Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).

Compatibility Notes

Several Feature Flags Gratuate to Core Features ("Always Enabled")

RabbitMQ 3.11.0 will require all feature flags from the 3.8.x release series to be enabled before upgrading.
If the feature flags are not enabled, RabbitMQ 3.11 and later nodes will refuse to start.

Minimum Supported Erlang Version

Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Open File Handle Limit is Capped by Default on Linux, *BSD, macOS

Nodes now default to 65536 concurrent client connections instead of using the effective kernel open file handle limit.
Users who want to override this default, that is, have nodes that should support more concurrent connections and open files,
now have to perform an additional configuration step:

  • Pick a new limit value they would like to use, for instance, 100K
  • Set the maximum open file handle limit (for example, via systemd or similar tooling) for the OS user used by RabbitMQ to 100K
  • Set the ERL_MAX_PORTS environment variable to 100K

This change was introduced because of a change in several Linux distributions: they now use a default open file handle limit so high,
they cause a significant (say, 1.5 GiB) memory preallocated the Erlang runtime.

For example, RHEL 9 and CentOS Stream 9 are examples of such distributions.
The new default comes from modern systemd.

See rabbitmq/rabbitmq-server#5684 and docker-library/rabbitmq#545
for details.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.10.x will be compatible with 3.11.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.

Changes Worth Mentioning

Release notes are kept under rabbitmq-server/release-notes.

Core Server

Enhancements

  • Some features flags have graduated to always enabled.
    This means that they must be enabled before upgrading to 3.11. If that is not the case, the upgrade process will not proceed.

  • More efficient connection tracking. This means less CPU load in environments where high connection churn
    cannot be avoided.

    In part contributed by @gomoripeti.

    GitHub issue: #5610

  • 10% to 20% throughput gain for publishers that use the default exchange.

    GitHub issue: #4606

  • When a virtual host is added, it now can be configured with default queue type.

    In part contributed by @adamncasey.

    GitHub issues: #5305, #5769

Bug Fixes

  • Durable classic queues could get "lost" under certain conditions when a node failed.

    GitHub issue: #4563

  • Nodes could get stuck when performing a rolling restart on Kubernetes where DNS hostname
    resolution was not available early on node boot.
    For example, this is the case with a popular default caching setting of CoreDNS.

    GitHub issue: #5438

  • More robust free disk space monitoring implementation for Windows.

    GitHub issue: #5738

Stream Plugin

Enhancement

  • RabbitMQ now supports partitioned streams (super streams).
    Super streams are a way to scale out by partitioning a large stream into smaller streams.

  • Stream protocol clients and RabbitMQ nodes now have a mechanism of exchanging
    their capabilities (sets of supported commands).

    GitHub issue: #5308

  • New stream protocol command that allows certain stream metadata to be inspected by
    applications.

    GitHub issue: #5412

  • Single Active Consumer support for streams.

    GitHub issue: #3754

  • Consumers now have access to their committed offset information.

    GitHub issue: #5307

OAuth 2 AuthN/AuthZ Backend Plugin

Enhancements

Grafana Dashboards

Bug Fixes

  • Some counters on the Overview page have been moved to global counters introduced in RabbitMQ 3.9.

    GitHub issue: #5463

Management Plugin

Enhancements

  • Management UI OAuth 2 integration supports more identity providers and OpenID Connect.

    GitHub issue: #4749

  • HTTP API responses that render a large rest sets are now more efficient thanks to a more efficient JSON serialiser library used internally.
    Peak memory footprint of such queries is also double digit percent lower compared to v3.10.x.

    GitHub issue: #5356

  • New endpoints that can list and close connections of a specific user.

    Contributed by @NuwanSameera.

    GitHub issue: #5319

MQTT Plugin

Enhancements

  • A way to configure an authentication timeout, much like in some other protocols RabbitMQ supports.

    Contributed by @gomoripeti.

    GitHub issue: #5755

STOMP Plugin

Enhancemen...

Read more

RabbitMQ 3.9.23

22 Sep 21:29
bd7ab98

Choose a tag to compare

RabbitMQ 3.9.23 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 24.2, and supports Erlang 25. RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

Erlang 23 support has reached its end of support.

Starting with this release, RabbitMQ requires Erlang 24.2 or later versions. Nodes will fail to start on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Open File Handle Limit is Capped by Default on Linux, *BSD, macOS

Nodes now default to 65536 concurrent client connections instead of using the effective kernel open file handle limit.
Users who want to override this default, that is, have nodes that should support more concurrent connections and open files,
now have to perform an additional configuration step:

  • Pick a new limit value they would like to use, for instance, 100K
  • Set the maximum open file handle limit (for example, via systemd or similar tooling) for the OS user used by RabbitMQ to 100K
  • Set the ERL_MAX_PORTS environment variable to 100K

This change was introduced because of a change in several Linux distributions: they now use a default open file handle limit so high,
they cause a significant (say, 1.5 GiB) memory preallocated the Erlang runtime.

For example, RHEL 9 and CentOS Stream 9 are examples of such distributions.
The new default comes from modern systemd.

See rabbitmq/rabbitmq-server#5684 and docker-library/rabbitmq#545
for details.

Changes Worth Mentioning

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

Core Server

Enhancements

  • Force GC after definition import to reduce peak memory load by mostly idle
    nodes that import a lot of definitions.

    GitHub issue: #5550

Bug Fixes

  • Reduced log noise from exceptions connections could run into when a client
    was closings it connection end concurrently with other activity.

    GitHub issue: #5539

  • rabbitmq-env-conf.bat on Windows could fail to load when its path contained spaces.

    GitHub issue: #5542

Stream Plugin

Bug Fixes

  • Stream declaration could run into an exception when stream parameters failed validation.

    GitHub issue: #5487

Grafana Dashboards

Bug Fixes

  • Some counters on the Overview page have been moved to global counters introduced in RabbitMQ 3.9.

    GitHub issue: #5463

MQTT Plugin

Enhancements

  • A way to configure an authentication timeout, much like in some other protocols RabbitMQ supports.

    Contributed by @gomoripeti.

    GitHub issue: #5755

Bug Fixes

  • Avoid an exception when MQTT client closes TCP connection before server could fully
    process a CONNECT frame sent earlier by the same client.

    GitHub issue: #5658

STOMP Plugin

Enhancements

  • A way to configure an authentication timeout, much like in some other protocols RabbitMQ supports.

    Contributed by @gomoripeti.

    GitHub issue: #5755

Windows installer

Enhancements

Dependency Upgrades

  • prometheus upgraded to 4.9.1
  • eetcd upgraded to 0.3.6

Source Code Archives

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

RabbitMQ 3.11.0-rc.1

04 Sep 00:59
e83aa16

Choose a tag to compare

RabbitMQ 3.11.0-rc.1 Pre-release
Pre-release

RabbitMQ 3.11.0-rc.1

This is a preview release of RabbitMQ 3.11.

Highlights

This release includes several new featues and optimizations, graduates (makes mandatory) a number of feature flags,
bumps minimum required version to Erlang 25 for ARM64 CPU feature parity.

The areas that have seen the biggest improvements in this release are

  • Streams and the RabbitMQ stream protocol
  • OAuth 2 support

See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

Erlang/OTP Compatibility Notes

This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.

Upgrading to 3.11

Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.

Required

RabbitMQ 3.11.0 will require all feature flags introduced in RabbitMQ 3.8 to be enabled
before upgrading. If that is not the case, the upgrade process will not proceed.

Mixed version cluster compatibility

RabbitMQ 3.11.0 nodes can run alongside 3.10.x nodes. 3.11.x-specific features can only be made available when all nodes in the cluster
upgrade to 3.11.0 or any other patch release in the series.

While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.11.0, these irregularities will go away.

Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).

Compatibility Notes

Several Feature Flags Gratuate to Core Features ("Always Enabled")

RabbitMQ 3.11.0 will require all feature flags from the 3.8.x release series to be enabled before upgrading.
If the feature flags are not enabled, RabbitMQ 3.11 and later nodes will refuse to start.

Minimum Supported Erlang Version

Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Open File Handle Limit is Capped by Default on Linux, *BSD, macOS

Nodes now default to 65536 concurrent client connections instead of using the effective kernel open file handle limit.
Users who want to override this default, that is, have nodes that should support more concurrent connections and open files,
now have to perform an additional configuration step:

  • Pick a new limit value they would like to use, for instance, 100K
  • Set the maximum open file handle limit (for example, via systemd or similar tooling) for the OS user used by RabbitMQ to 100K
  • Set the ERL_MAX_PORTS environment variable to 100K

This change was introduced because of a change in several Linux distributions: they now use a default open file handle limit so high,
they cause a significant (say, 1.5 GiB) memory preallocated the Erlang runtime.

For example, RHEL 9 and CentOS Stream 9 are examples of such distributions.
The new default comes from modern systemd.

See rabbitmq/rabbitmq-server#5684 and docker-library/rabbitmq#545
for details.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.10.x will be compatible with 3.11.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.

Changes Worth Mentioning

Release notes are kept under rabbitmq-server/release-notes.

Core Server

Enhancements

  • Some features flags have graduated to always enabled.
    This means that they must be enabled before upgrading to 3.11. If that is not the case, the upgrade process will not proceed.

  • More efficient connection tracking. This means less CPU load in environments where high connection churn
    cannot be avoided.

    In part contributed by @gomoripeti.

    GitHub issue: #5610

  • 10% to 20% throughput gain for publishers that use the default exchange.

    GitHub issue: #4606

Bug Fixes

  • Durable classic queues could get "lost" under certain conditions when a node failed.

    GitHub issue: #4563

  • Nodes could get stuck when performing a rolling restart on Kubernetes where DNS hostname
    resolution was not available early on node boot.
    For example, this is the case with a popular default caching setting of CoreDNS.

    GitHub issue: #5438

Stream Plugin

Enhancement

  • RabbitMQ now supports partitioned streams (super streams).
    Super streams are a way to scale out by partitioning a large stream into smaller streams.

  • Stream protocol clients and RabbitMQ nodes now have a mechanism of exchanging
    their capabilities (sets of supported commands).

    GitHub issue: #5308

  • New stream protocol command that allows certain stream metadata to be inspected by
    applications.

    GitHub issue: #5412

  • Single Active Consumer support for streams.

    GitHub issue: #3754

  • Consumers now have access to their committed offset information.

    GitHub issue: #5307

OAuth 2 AuthN/AuthZ Backend Plugin

Enhancements

Management Plugin

Enhancements

  • Management UI OAuth 2 integration supports more identity providers and OpenID Connect.

    GitHub issue: #4749

  • HTTP API responses that render a large rest sets are now more efficient thanks to a more efficient JSON serialiser library used internally.
    Peak memory footprint of such queries is also double digit percent lower compared to v3.10.x.

    GitHub issue: #5356

  • New endpoint for listing connections of a specific user.

    Contributed by @NuwanSameera.

    GitHub issue: #5319

Dependency Changes

  • ra upgraded to 2.3.0
  • osiris upgraded to 1.3.0
  • prometheus upgraded to 4.9.0
  • jsx was replaced with thoas

RabbitMQ 3.10.7

02 Aug 10:06

Choose a tag to compare

RabbitMQ 3.10.7 is a maintenance release in the 3.10.x release series.

Please refer to the upgrade section from v3.10.0 release notes
if upgrading from a version prior to 3.10.0.

This release requires Erlang 24.x and supports Erlang 25.
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

Enhancements

  • Classic queue that used CQv2 (2nd generation index and message store) could run into an exception when lazy mode
    was enabled for them.

    GitHub issue: #5252

  • Stream coordinator now handles lots of client connections on a single stream more efficiently.
    Previously its memory footprint was likely to begin creeping up.

    GitHub issue: #5181

  • In environments where DNS resolution is not yet available at the time RabbitMQ nodes boot and try to perform peer discovery,
    such as CoreDNS with default caching interval of 30s on Kubernetes, nodes now will retry
    hostname resolution (including of their own host) several times with a wait interval.

    The recommended solution is to decrease CoreDNS caching interval.

    GitHub issue: #5322

  • Free disk space monitoring on Windows was reworked to rely on standard runtime features more instead
    of a 3rd party, closed source handle.exe.

    GitHub issues: #5241, #4328

Bug Fixes

  • Reduce log noise when sysctl cannot be accessed by node memory monitor.

    GitHub issue: #5256

Prometheus Plugin

Enhancements

  • Prometheus plugin now exposes one more metric, process_start_time_seconds, the moment of node process
    startup in seconds.

    GitHub issue: #4539

Management Plugin

Enhancements

  • Three more security-related response headers now can be set for all HTTP API endpoints:

    • X-Frame-Options
    • X-Xss-Protection
    • X-Content-Type-Options
    management.headers.content_type_options = nosniff
    management.headers.xss_protection = 1; mode=block
    management.headers.frame_options = DENY

    This is in addition to the CSP, HSTS, and CORS headers:

    management.hsts.policy = max-age=31536000; includeSubDomains
    management.csp.policy = default-src 'self'; script-src 'self' 'unsafe-eval'
    
    management.headers.content_type_options = nosniff
    management.headers.xss_protection = 1; mode=block
    management.headers.frame_options = DENY

    GitHub issue: #5320

Shovel plugin

Bug Fixes

  • Shovels now handle consumer delivery timeouts gracefully and restart.

    Contributed by @Haster2004.

    GitHub issue: #5243

Dependency Upgrades

Source Code Archives

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

RabbitMQ 3.9.22

02 Aug 07:59
dd51a3a

Choose a tag to compare

RabbitMQ 3.9.22 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 24.x, and supports Erlang 25. 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

Enhancements

  • In environments where DNS resolution is not yet available at the time RabbitMQ nodes boot and try to perform peer discovery,
    such as CoreDNS with default caching interval of 30s on Kubernetes, nodes now will retry
    hostname resolution (including of their own host) several times with a wait interval.

    The recommended solution is to decrease CoreDNS caching interval.

    GitHub issue: #5335

Bug Fixes

  • Reduce log noise when sysctl cannot be accessed by node memory monitor.

    GitHub issue: #5260

Prometheus Plugin

Enhancements

  • Prometheus plugin now exposes one more metric, process_start_time_seconds, the moment of node process
    startup in seconds.

    GitHub issue: #4539

Shovel plugin

Bug Fixes

  • Shovels now handle consumer delivery timeouts gracefully and restart.

    Contributed by @Haster2004.

    GitHub issue: #5243

Dependency Upgrades

None in this release.

Source Code Archives

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

RabbitMQ 3.10.6

10 Jul 10:14
809aed2

Choose a tag to compare

RabbitMQ 3.10.6 is a maintenance release in the 3.10.x release series.

Please refer to the upgrade section from v3.10.0 release notes
if upgrading from a version prior to 3.10.0.

This release requires at least Erlang 23.2, and supports Erlang 24 and 25.
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

Enhancements

  • Stream metric collection is now more CPU efficient. It helps in environments that
    have many streams.

    GitHub issue: #4950

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

    GitHub issue: #4990

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

    GitHub issue: #4982

  • CRC32 checksum verification now can be disabled for quorum queues:

    quorum_queue.compute_checksums = false
    

    This may be beneficial in environments that messages are large and CPU resources
    are limited. Note the CRC32 checksums are not the only data corruption detection
    mechanism used by quorum queues but they are good at catching certain types of corruption.

    Disabling checksums can provide quorum queue throughput boost of up to 15%.
    In environments where message size is small the gains will be smaller.

    GitHub issue: #5166

  • 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: #5037

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

    GitHub issue: #5020

  • Stream coordinator warnings now include operation name for clarify.

    GitHub issue: #5036

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

    GitHub issue: #5125

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: #5107

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

    GitHub issue: #5085

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

    GitHub issue: #5131

  • Removed a duplicate exchange decorator set operation.

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

    GitHub issue: #4962

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

Enhancements

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

    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

Dependency Upgrades

Source Code Archives

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

RabbitMQ 3.9.21

09 Jul 20:18
4ee7511

Choose a tag to compare

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

Enhancements

  • 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
    tools.

    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

Enhancements

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

    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.

RabbitMQ 3.8.35

09 Jul 19:01

Choose a tag to compare

RabbitMQ 3.8.35 is a maintenance release.
All users are recommended to upgrade to this release.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

Erlang/OTP Compatibility Notes

This release requires Erlang 23.2 and supports Erlang 24.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision modern Erlang versions.

Upgrade and Compatibility Notes

See the Upgrading guide for general documentation on upgrades and
RabbitMQ change log for release notes of other releases.

If upgrading from a 3.7.x release, see 3.8.0 release notes
upgrade and compatibility notes first.

If upgrading from a 3.6.x or older release series, first upgrade
to 3.7.27 and then to this version.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
and RabbitMQ community Slack.

Changes Worth Mentioning

Consul Peer Discovery Plugin

Enhancements

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

    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

Dependency Upgrades

None in this release.

Source Code Archives

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

RabbitMQ 3.10.5

01 Jun 22:53
8d4b3a4

Choose a tag to compare

RabbitMQ 3.10.5 is a maintenance release in the 3.10.x release series.

Please refer to the upgrade section from v3.10.0 release notes
if upgrading from a version prior to 3.10.0.

This release requires at least Erlang 23.2, and supports Erlang 24 and 25.
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

Bug Fixes

  • Quorum queue could run into an exception when dead lettering a message
    under certain conditions.

    GitHub issue: #4947

Debian Package

  • RabbitMQ Debian package now lists Erlang 25.0 as supported.

Dependency Upgrades

None in this release.

Source Code Archives

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