Skip to content

Releases: rabbitmq/rabbitmq-server

RabbitMQ 3.10.0-rc.1

24 Mar 20:44
e7e33cc

Choose a tag to compare

RabbitMQ 3.10.0-rc.1 Pre-release
Pre-release

Highlights

This release improves efficiency of quorum and classic queues. Per-queue memory footprint was reduced for some workloads.

It also introduces message TTL support for quorum queues.

Obtaining Packages

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

Erlang/OTP Compatibility Notes

This release requires Erlang 23.2 or later. Erlang 24 is recommended as it offers 20%-50% throughput improvements for many workloads.

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

Upgrading to 3.10

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

RabbitMQ 3.10.0 nodes can run alongside 3.9.x nodes. 3.10.x-specific features can only be made available when all nodes in the cluster upgrade to 3.10.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.10.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

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.9.x will be compatible with 3.10.0.

Upgrading to Erlang 24.x

RabbitMQ 3.8.16 and later require Erlang 23.2 and support Erlang 24 (recommended).
Users of RabbitMQ versions that do not support Erlang 23.2 should first upgrade to the latest 3.8.x patch release on Erlang 23.2, then upgrade to 3.10.0, and ideally Erlang 24.

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

  • Reduced memory footprint of quorum queues. Quorum queues now move enqueues messages to disk as quickly as possible, ignoring the x-max-in-memory-length and x-max-in-memory-bytes policy keys. This reduces per-queue memory footprint and makes throughput and latency less variable.

    GitHub issue: #3898

  • New classic queue index and message store implementations. This makes memory footprint of classic queues less variable and on average, lower than before. Consumer delivery is more efficient, potentially increasing throughput for workloads where consumers do keep up with producers.

    This implementation is not enabled by default. It can be enabled using a policy:

    rabbitmqctl set_policy cq_version "^cq\." '{"queue-version": 2}' --priority 1 --apply-to queues

    or set via rabbitmq.conf:

    classic_queue.default_version = 2

    GitHub issue: #3029

  • Quorum queues now support message TTL.

    GitHub issue: #3121

  • Reduced per-queue garbage collection.

    GitHub issue: #4110

  • Stream replication connections now adopt TLS settings configured for inter-node communication links.

    GitHub issue: #3553

  • Quorum queues now support two dead lettering strategies, at-most-once (the 3.9 quorum queue and classic queue behavior) and at-least-once.

    To use at-least-once the user must opt-in.

    GitHub issue: #3100

  • Messages delivered by a quorum queue and negatively acknowledged with a requeue will be added to the back of the queue until the queue has redelivery limit set. With a redelivery limit, requeueing will use the original position of the message if possible.

    This improves operational safety: consumers that get stuck or requeue deliveries at a high rate will not indefinitely grow quorum queue Raft log, potentially driving the node out of disk space.

    Breaking change This is a potentially breaking change.
    Applications can make sure quorum queues have a redelivery limit set if the original behavior is important to keep.

    GitHub issue: #3776

  • Boot time definition sync now can be skipped if definition source (e.g. file or directory) contents have not changed:

    definitions.skip_if_unchanged = true
    
    definitions.import_backend = local_filesystem
    definitions.local.path = /path/to/definitions/defs.json

    GitHub issue: #4062

  • Classic mirrored queues peak eager sync throughput now can be limited.

    Contributed by @thuandb (AWS).

    GitHub issue: #3925

  • Headers exchanges (AMQP 0-9-1) now support a new matching strategy, "any-with-x", which works the same way as "any" but also considers headers that begin with an "x-".

    GitHub issue: #4143

  • Queues can no longer be created in a vhost while deletion of that vhost is in progress

    Contributed by @tomyouyou.

    GitHub issue: #4260

  • rabbitmqctl encode/decode can now accept more values via standard input

    GitHub issue: #4258

  • rabbitmq_tracing now uses local time for timestamps

    GitHub issue: #4277

Internal API and Other Changes

  • Tracing and idle_since timestamps now reflect local time in RFC 3339 format. Previously a custom format was used for these timestamps and they always reflected UTC time.

    GitHub issue: #4276

  • Inter-node message transfer is optimized for the case where a message is only routed to one queue.

    Contributed by @tomyouyou.

    GitHub issue: #3865

  • Definition import now can be extended to support arbitrary sources. This is done by providing a module that implements three functions: is_enabled/0, load/1, load_with_hashing/3.
    The module can then should be specified as the definitions.import_backend value:

    definitions.import_backend = rabbit_definitions_import_our_custom_backend

    GitHub issue: #3311

  • Elixir 1.13 is now supported at build time.

    GitHub issue: #4108

Bug Fixes

This release includes all bug fixes that shipped in 3.9.x releases.

  • Addressed a performance regression for large fanouts when streams were not enabled.

    GitHub issue: #4073

  • Channels could confirm a subset of messages published as mandatory in some cases.

    GitHub issue: #3870

  • Direct Erlang client initialisation had a race condition with earlier boot steps, which could lead plugins that depend on it to fail to open connections.

    GitHub issue: #3685

  • Exclusive queues are always placed on local node.

    Exclusive queues are by definition node-local because they are tied to the lifecycle of their declaring connection, which is node-local.

    GitHub issue: #3341

Management Plugin

  • idle_since field now uses RFC 3339 format.

    Breaking change This is a potentially breaking change.
    Sample value with the previous format: 2022-03-22 11:39:37. With the new format: 2022-03-22T11:39:37.908+01:00.
    Clients of the REST API should be able to parse values in the new format.

    GitHub issue: #4276

OAuth 2 AuthN and AuthZ Backend Plugin

  • Improvements to JKW support and new HTTPS settings.

    Contributed by @anhanhnguyen (Erlang Solutions).

    GitHub issue: #3887

Shovel Plugin

Enhancements

  • Dynamic Shovels can be deleted or restarted from any cluster node

    Contributed by @kostakal.

    GitHub issue: #4242

Bug Fixes

  • Shovels with automatic deletion threshold of 0 are now correctly deleted immediately.

    Contribited by @lu...

Read more

RabbitMQ 3.10.0-beta.5

22 Mar 17:15

Choose a tag to compare

Pre-release

Highlights

This release improves efficiency of quorum and classic queues. Per-queue memory footprint was reduced for some workloads.

It also introduces message TTL support for quorum queues.

Obtaining Packages

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

Erlang/OTP Compatibility Notes

This release requires Erlang 23.2 or later. Erlang 24 is recommended as it offers 20%-50% throughput improvements for many workloads.

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

Upgrading to 3.10

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

RabbitMQ 3.10.0 nodes can run alongside 3.9.x nodes. 3.10.x-specific features can only be made available when all nodes in the cluster upgrade to 3.10.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.10.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

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.9.x will be compatible with 3.10.0.

Upgrading to Erlang 24.x

RabbitMQ 3.8.16 and later require Erlang 23.2 and support Erlang 24 (recommended).
Users of RabbitMQ versions that do not support Erlang 23.2 should first upgrade to the latest 3.8.x patch release on Erlang 23.2, then upgrade to 3.10.0, and ideally Erlang 24.

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

  • Reduced memory footprint of quorum queues. Quorum queues now move enqueues messages to disk as quickly as possible, ignoring the x-max-in-memory-length and x-max-in-memory-bytes policy keys. This reduces per-queue memory footprint and makes throughput and latency less variable.

    GitHub issue: #3898

  • New classic queue index and message store implementations. This makes memory footprint of classic queues less variable and on average, lower than before. Consumer delivery is more efficient, potentially increasing throughput for workloads where consumers do keep up with producers.

    This implementation is not enabled by default. It can be enabled using a policy:

    rabbitmqctl set_policy cq_version "^cq\." '{"queue-version": 2}' --priority 1 --apply-to queues

    or set via rabbitmq.conf:

    classic_queue.default_version = 2

    GitHub issue: #3029

  • Quorum queues now support message TTL.

    GitHub issue: #3121

  • Reduced per-queue garbage collection.

    GitHub issue: #4110

  • Stream replication connections now adopt TLS settings configured for inter-node communication links.

    GitHub issue: #3553

  • Quorum queues now support two dead lettering strategies, at-most-once (the 3.9 quorum queue and classic queue behavior) and at-least-once.

    To use at-least-once the user must opt-in.

    GitHub issue: #3100

  • Messages delivered by a quorum queue and negatively acknowledged with a requeue will be added to the back of the queue until the queue has redelivery limit set. With a redelivery limit, requeueing will use the original position of the message if possible.

    This improves operational safety: consumers that get stuck or requeue deliveries at a high rate will not indefinitely grow quorum queue Raft log, potentially driving the node out of disk space.

    Breaking change This is a potentially breaking change.
    Applications can make sure quorum queues have a redelivery limit set if the original behavior is important to keep.

    GitHub issue: #3776

  • Boot time definition sync now can be skipped if definition source (e.g. file or directory) contents have not changed:

    definitions.skip_if_unchanged = true
    
    definitions.import_backend = local_filesystem
    definitions.local.path = /path/to/definitions/defs.json

    GitHub issue: #4062

  • Classic mirrored queues peak eager sync throughput now can be limited.

    Contributed by @thuandb (AWS).

    GitHub issue: #3925

  • Headers exchanges (AMQP 0-9-1) now support a new matching strategy, "any-with-x",
    which works the same way as "any" but also considers headers that begin with
    an "x-".

    GitHub issue: #4143

  • Queues can no longer be created in a vhost while deletion of that vhost is in progress

    Contributed by @tomyouyou.

    GitHub issue: #4260

  • rabbitmqctl encode/decode can now accept more values via standard input

    GitHub issue: #4258

  • rabbitmq_tracing now uses local time for timestamps

    GitHub issue: #4277

Internal API and Other Changes

  • Inter-node message transfer is optimized for the case where a message is only routed to one queue.

    Contributed by @tomyouyou.

    GitHub issue: #3865

  • Definition import now can be extended to support arbitrary sources. This is done
    by providing a module that implements three functions: is_enabled/0, load/1, load_with_hashing/3.
    The module can then should be specified as the definitions.import_backend value:

    definitions.import_backend = rabbit_definitions_import_our_custom_backend

    GitHub issue: #3311

  • Elixir 1.13 is now supported at build time.

    GitHub issue: #4108

Bug Fixes

This release includes all bug fixes that shipped in 3.9.x releases.

  • Addressed a performance regression for large fanouts when streams were not enabled.

    GitHub issue: #4073

  • Channels could confirm a subset of messages published as mandatory in some cases.

    GitHub issue: #3870

  • Direct Erlang client initialisation had a race condition with earlier boot steps,
    which could lead plugins that depend on it to fail to open connections.

    GitHub issue: #3685

  • Exclusive queues are always placed on local node.

    Exclusive queues are by definition node-local because they are tied to the lifecycle of
    their declaring connection, which is node-local.

    GitHub issue: #3341

OAuth 2 AuthN and AuthZ Backend Plugin

  • Improvements to JKW support and new HTTPS settings.

    Contributed by @anhanhnguyen (Erlang Solutions).

    GitHub issue: #3887

Shovel Plugin

Enhancements

  • Dynamic Shovels can be deleted or restarted from any cluster node

    Contributed by @kostakal.

    GitHub issue: #4242

Bug Fixes

  • Shovels with automatic deletion threshold of 0 are now correctly deleted immediately.

    Contribited by @luos (Erlang Solutions).

    GitHub issue: #4098

Consul Peer Discovery Plugin

Bug Fixes

  • Handle a response code change in Consul 1.11.

    Contributed by @maestroes.

    GitHub issue: #4149

Dependency Changes

Read more

RabbitMQ 3.9.14

22 Mar 15:33

Choose a tag to compare

RabbitMQ 3.9.14 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 are kept under rabbitmq-server/release-notes.
Contributors are encouraged to update them together with their changes. This helps with release automation and a more consistent release schedule.

Core Server

Bug Fixes

  • Restart of a node that hosted one or more stream leaders resulted in
    their consumers not "re-attaching" to the newly elected leader.

    GitHub issue: #4133

  • Large fanouts experienced a performance regression when streams were not
    enabled using a feature flag.

    GitHub issue: #4086

  • Stream management plugin did not support mixed version clusters.

    GitHub issue: #4082

  • Stream deletion did not result in a basic.cancel being sent to AMQP 0-9-1 consumers.

    GitHub issue: #4192

  • Stream clients did not receive a correct stream unavailability error in some
    cases.

    GitHub issue: #4117

  • It is again possible to clear user tags and update the password in a single operation.

    GitHub issue: #4126

Enhancements

  • Forward compatibility with Erlang 25.

    GitHub issue: #4256

  • File handle cache efficiency improvements.

    Contributed by @felixhuettner.

    GitHub issue: #4324

  • Uknown stream properties (e.g. those requested by a node that runs a newer version)
    are now handled gracefully.

    GitHub issue: #4090

  • Temporary hostname resolution issues (attempts that fail with nxdomain)
    are now handled more gracefully and with a delay of several seconds.

    GitHub issue: #4233

  • Build time compatibility with Elixir 1.13.

    GitHub issue: #4019

OAuth 2 AuthN/AuthZ Backend Plugin

Bug Fixes

  • auth_oauth2.additional_scopes_key in rabbitmq.conf was not converted correctly
    during configuration translation and thus had no effect.

    Contributed by @luos.

    GitHub issue: #4105

LDAP AuthN/AuthZ Backend Plugin

Enhancement

  • Adapt to a breaking Erlang 24.3 LDAP client change.

    GitHub issue: #4287

Shovel Plugin

Enhacements

  • Shovels now can be declared with delete-after parameter set to 0.
    Such shovels will immediately stop instead of erroring and failing to
    start after a node restart.

    Contributed by @luos.

    GitHub issue: #4101

Consul Peer Discovery Plugin

Enhancements

Dependency Upgrades

Source Code Archives

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

RabbitMQ 3.8.28

22 Mar 08:18

Choose a tag to compare

RabbitMQ 3.8.28 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 a3.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

Release notes are kept under rabbitmq-server/release-notes.
Contributors are encouraged to update them together with their changes. This helps with release automation and more
consistent release schedule.

Core Server

Bug Fixes

  • Inter-node communication listener IP address was hardcoded in
    the output of rabbitmq-diagnostics status and related commands.

    Contributed by @tomyouyou.

    GitHub issue: #3956

OAuth 2 AuthN/AuthZ Backend Plugin

Bug Fixes

  • auth_oauth2.additional_scopes_key in rabbitmq.conf was not converted correctly
    during configuration translation and thus had no effect.

    Contributed by @luos.

    GitHub issue: #4105

LDAP AuthN/AuthZ Backend Plugin

Enhancement

  • Adapt to a breaking Erlang 24.3 LDAP client change.

    GitHub issue: #4287

Shovel Plugin

Enhacements

  • Shovels now can be declared with delete-after parameter set to 0.
    Such shovels will immediately stop instead of erroring and failing to
    start after a node restart.

    Contributed by @luos.

    GitHub issue: #4101

Consul Peer Discovery Plugin

Enhancements

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.28.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.10.0-beta.4

10 Mar 07:26
f918aa2

Choose a tag to compare

Pre-release

Highlights

This release improves efficiency of quorum and classic queues. Per-queue memory footprint was reduced for some workloads.

It also introduces message TTL support for quorum queues.

Obtaining Packages

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

Erlang/OTP Compatibility Notes

This release requires Erlang 23.2 or later. Erlang 24 is recommended as it offers 20%-50% throughput improvements for many workloads.

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

Upgrading to 3.10

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

RabbitMQ 3.10.0 nodes can run alongside 3.9.x nodes. 3.10.x-specific features can only be made available when all nodes in the cluster upgrade to 3.10.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.10.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

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.9.x will be compatible with 3.10.0.

Upgrading to Erlang 24.x

RabbitMQ 3.8.16 and later require Erlang 23.2 and support Erlang 24 (recommended). Users of RabbitMQ versions that do not support Erlang 23.2 should first upgrade to the latest 3.8.x patch release on Erlang 23.2, then upgrade to 3.10.0, and ideally Erlang 24.

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

  • Reduced memory footprint of quorum queues. Quorum queues now move enqueues messages to disk as quickly as possible, ignoring the x-max-in-memory-length and x-max-in-memory-bytes policy keys. This reduces per-queue memory footprint and makes throughput and latency less variable.

    GitHub issue: #3898

  • New classic queue index and message store implementations. This makes memory footprint of classic queues less variable and on average, lower than before. Consumer delivery is more efficient, potentially increasing throughput for workloads where consumers do keep up with producers.

    This implementation is not enabled by default. It can be enabled using a policy:

    rabbitmqctl set_policy cq_version "^cq\." '{"queue-version": 2}' --priority 1 --apply-to queues

    or set via rabbitmq.conf:

    classic_queue.default_version = 2

    GitHub issue: #3029

  • Quorum queues now support message TTL.

    GitHub issue: #3121

  • Reduced per-queue garbage collection.

    GitHub issue: #4110

  • Stream replication connections now adopt TLS settings configured for inter-node communication links.

    GitHub issue: #3553

  • Quorum queues now support two dead lettering strategies, at-most-once (the 3.9 quorum queue and classic queue behavior) and at-least-once.

    To use at-least-once the user must opt-in.

    GitHub issue: #3100

  • Messages delivered by a quorum queue and negatively acknowledged with a requeue will be added to the back of the queue until the queue has redelivery limit set. With a redelivery limit, requeueing will use the original position of the message if possible.

    This improves operational safety: consumers that get stuck or requeue deliveries at a high rate will not indefinitely grow quorum queue Raft log, potentially driving the node out of disk space.

    Breaking change This is a potentially breaking change. Applications can make sure quorum queues have a redelivery limit set if the original behavior is important to keep.

    GitHub issue: #3776

  • Boot time definition sync now can be skipped if definition source (e.g. file or directory) contents have not changed:

    definitions.skip_if_unchanged = true
    
    definitions.import_backend = local_filesystem
    definitions.local.path = /path/to/definitions/defs.json

    GitHub issue: #4062

  • Classic mirrored queues peak eager sync throughput now can be limited.

    Contributed @thuandb (AWS).

    GitHub issue: #3925

  • Headers exchanges (AMQP 0-9-1) now support a new matching strategy, "any-with-x", which works the same way as "any" but also considers headers that begin with an "x-".

    GitHub issue: #4143

Internal API and Other Changes

  • Inter-node message transfer is optimized for the case where a message is only routed to one queue.

    Contributed by @tomyouyou.

    GitHub issue: #3865

  • Definition import now can be extended to support arbitrary sources. This is done by providing a module that implements three functions: is_enabled/0, load/1, load_with_hashing/3. The module can then should be specified as the definitions.import_backend value:

    definitions.import_backend = rabbit_definitions_import_our_custom_backend

    GitHub issue: #3311

  • Elixir 1.13 is now supported at build time.

    GitHub issue: #4108

Bug Fixes

This release includes all bug fixes that shipped in 3.9.x releases.

  • Addressed a performance regression for large fanouts when streams were not enabled.

    GitHub issue: #4073

  • Channels could confirm a subset of messages published as mandatory in some cases.

    GitHub issue: #3870

  • Direct Erlang client initialisation had a race condition with earlier boot steps, which could lead plugins that depend on it to fail to open connections.

    GitHub issue: #3685

  • Exclusive queues are always placed on local node.

    Exclusive queues are by definition node-local because they are tied to the lifecycle of their declaring connection, which is node-local.

    GitHub issue: #3341

OAuth 2 AuthN and AuthZ Backend Plugin

  • Improvements to JKW support and new HTTPS settings.

    Contributed by @anhanhnguyen (Erlang Solutions).

    GitHub issue: #3887

Shovel Plugin

Bug Fixes

  • Shovels with automatic deletion threshold of 0 are now correctly deleted immediately.

    Contribited by @luos (Erlang Solutions).

    GitHub issue: #4098

Consul Peer Discovery Plugin

Bug Fixes

  • Handle a response code change in Consul 1.11.

    Contributed by @maestroes.

    GitHub issue: #4149

Dependency Changes

RabbitMQ 3.9.13

19 Jan 08:28

Choose a tag to compare

RabbitMQ 3.9.13 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 are kept under rabbitmq-server/release-notes.
Contributors are encouraged to update them together with their changes. This helps with release automation and a more consistent release schedule.

Core Server

Bug Fixes

  • Disk space monitor now correctly parses output on (at least some) systems where non-ASCII characters are used in paths.

    GitHub issue: #3970

  • Stream leader election is now deterministic when cluster is undergoing a rolling upgrade.

    GitHub issue: #3967

Enhancements

  • Queue and binding definition import can be delayed until a moment
    when at least N nodes (e.g. three) have joined the cluster. This way imported quorum queues will have a desired
    number of replicas from the start.

    GitHub issue: #3986

Dependency Upgrades

Source Code Archives

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

RabbitMQ 3.9.12

06 Jan 13:39

Choose a tag to compare

RabbitMQ 3.9.12 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 are kept under rabbitmq-server/release-notes.
Contributors are encouraged to update them together with their changes. This helps with release automation and a more consistent release schedule.

Core Server

Bug Fixes

  • Work around a slow Windows-specific memory leak in Erlang's file:read_file/1.

    GitHub issues: #3936, #3906

  • log.file.rotation.date pattern parser now supports more values and is closer to Lager in
    RabbitMQ 3.7 and earlier releases.

    GitHub issue: #3831

  • User limits were ignored by definition import.

    GitHub issue: #3458

  • Stream coordinator could run into an exception in some scenarios.

    GitHub issue: #3908

  • On node shutdown, stopped applications were unintentionally logged at the error level.

    GitHub issue: #3900

Enhancements

  • basic.* AMQP 0-9-1 operations now consume fewer CPU cycles.

    GitHub issue: #3934

  • More efficient (up to 67% more) user addition and updates, including during definition import.

    GitHub issue: #3894

  • Authentiication and authorization backend exceptions could potentially leak user-provided credentials
    to node log.

    Contributed by @luos on behalf of LKAB.

    GitHub issue: #3903

  • When a non-existent stream offset is requested, the server will return a more appropriate
    error code.

    GitHub issue: #3783

  • Stream operations that fail due to an unavailable leader now use a separate error code
    from the case when the stream does not exist.

    GitHub issue: #3874

  • Deprecated classic health check is now less resource intensive (but still very intensive
    compared to modern alternatives).

    GitHub issue: #3905

  • Operator and regular policy merging now supports keys that use boolean values.
    The operator value overrides the regular policy one.

    GitHub issue: #3880

  • Free disk space monitoring robustness improvements on Windows.

    GitHub issue: #3895

  • Unnamed parameters and policies in definition files will now be rejected
    as invalid.

    Contributed by @polaris-alioth.

    GitHub issue: #971

OAuth 2 Plugin

Enhancements

  • HTTPS client and related improvements for JWKS URLs.

    Contributed by @anhanhnguyen on behalf of LKAB.

    GitHub issue: #3887

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.12.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.8.27

05 Jan 14:14

Choose a tag to compare

RabbitMQ 3.8.27 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 a3.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

Release notes are kept under rabbitmq-server/release-notes.
Contributors are encouraged to update them together with their changes. This helps with release automation and more
consistent release schedule.

Core Server

Bug Fixes

Enhancements

  • basic.* AMQP 0-9-1 operations now consume fewer CPU cycles.

    GitHub issue: #3934

  • Free disk space monitoring robustness improvements on Windows.

    GitHub issue: #3895

  • Deprecated classic health check is now less resource intensive (but still very intensive
    compared to modern alternatives)

Management Plugin

Bug Fixes

  • A help tip on the policies page was misplaced.

    Contributed by @johanrhodin

    GitHub issue: #3825

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.27.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.9.11

02 Dec 14:09
44036a2

Choose a tag to compare

RabbitMQ 3.9.11 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 are kept under rabbitmq-server/release-notes.
Contributors are encouraged to update them together with their changes. This helps with release automation and a more consistent release schedule.

Core Server

Bug Fixes

  • When a TLS-enabled listener failed to stop, it logged all of its settings
    which could contain sensitive values.

    GitHub issue: #3803

Enhancements

  • Quorum queues now store commands for enqueued messages in a more compact format
    on disk (some derivative data has been dropped).

    GitHub issue: #3804

  • queue.declare-ok response to AMQP 0-9-1 clients operating on a stream could return a ready-for-delivery
    message count value that was out of sync with the stream leader replica.

    GitHub issue: #3814

  • Classic queues now deliver more efficiently on channels that had global QoS changed
    during consumer operation.

    Contributed by @tomyouyou.

    GitHub issue: #3805

Prometheus Plugin

Enhancements

  • New optional metrics provided by the GET /metrics/detailed endpoint. These metrics are cluster-wide,
    and therefore must not be aggregated.

    GitHub issue: #3779

Management Plugin

Bug Fixes

  • A help tip on the policies page was misplaced.

    Contributed by @johanrhodin

    GitHub issue: #3825

Management Agent Plugin

Enhancements

  • Disabling the plugin will stop metric collection performed periodically by
    queues, streams, connections, et cetera.

    Contributed by @tomyouyou.

    GitHub issue: #3800

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.11.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.9.10

19 Nov 14:29
df9b758

Choose a tag to compare

RabbitMQ 3.9.10 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 are kept under rabbitmq-server/release-notes.
Contributors are encouraged to update them together with their changes. This helps with release automation and a more consistent release schedule.

Core Server

Bug Fixes

  • Make stream coordinator more defensive to rapid declaration and deletion cycles

    GitHub issue: #33731631

Enhancements

  • Several inter-node communication listener settings are now exposed to rabbitmq.conf:

    # this port range is used by default
    distribution.listener.port_range.min = 25675
    distribution.listener.port_range.max = 25675
    # instead of listening on all interfaces
    distribution.listener.interface = 192.168.0.1

    GitHub issue: #3739

OAuth 2 Plugin

Bug Fixes

  • Signing keys specified in rabbitmq.conf were not translated correctly,
    resulting in exceptions during permission checks.

    GitHub issue: #3759

Dependency Upgrades

Source Code Archives

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