Skip to content

Releases: rabbitmq/rabbitmq-server

RabbitMQ 3.8.17-rc.1

28 May 14:11

Choose a tag to compare

RabbitMQ 3.8.17-rc.1 Pre-release
Pre-release

RabbitMQ 3.8.17-rc.1

RabbitMQ 3.8.17-rc.1 is a preview of a maintenance 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

Core Server

Enhancements

  • Queue index efficiency improvements, mostly around peak memory consumption with large backlogs of small messages.

    Note that some of the improvements come from more optimal defaults: those will only be
    applicable to newly created virtual hosts (or new clusters).

    GitHub issues: #2954, #3041

  • Consumer delivery acknowledgement timeout default has been bumped to 30 minutes (previously 15 minutes). The value
    can be overridden.

    GitHub issue: #3033

Management Plugin

Bug Fixes

  • A combination of HTTPS (TLS) settings and advanced HTTP server settings
    resulted in an exception.

    GitHub issue: #3039

  • External stats collector is now restarted again if it fails for any reason.

    Contributed by @luos.

    GitHub issue: #3040

Consistent History Exchange Plugin

Enhancements

Recent History Exchange Plugin

Enhancements

Last Value Cache Exchange 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.17.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.8.16

04 May 22:36

Choose a tag to compare

RabbitMQ 3.8.16

RabbitMQ 3.8.16 is a maintenance release.

It reintroduces rabbitmq_peer_discovery_aws plugin that was unintentionally removed
from 3.8.15 due to release pipeline changes.

This is the first release to drop support for Erlang 22.3 and introduce support for the upcoming Erlang 24 release.

Obtaining Packages

This release is distributed via GitHub, Cloudsmith,
and PackageCloud.

Erlang/OTP Compatibility Notes

This is the first release to require Erlang 23.2 or later and support upcoming Erlang 24.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision a recent version of Erlang 23.3.

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

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

Core Server

Erlang Release Series Support

AWS Peer Discovery Plugin

Bug Fixes

  • This plugin was unintentionally excluded from the distribution in 3.8.15 and has now been
    added back.

    GitHub issue: #3023

Management Plugin

Enhancements

  • Messaging polling HTTP API endpoint leaked temporary connections it used in case of a polling timeout.
    Note that this endpoint is not recommended to be used outside of QA environments.
    Use a long-lived consumer via one of the supported messaging protocols.

    Contributed by @luos.

    GitHub issue: #3024

Dependency Upgrades

Source Code Archives

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

RabbitMQ 3.8.15

03 May 13:27

Choose a tag to compare

RabbitMQ 3.8.15

RabbitMQ 3.8.15 is a maintenance release that includes two security patches.

All users are advised to consult the set of changes in this release but then
upgrade straight to 3.8.16 or a newer version if available and skip this release.

Security Patches

his release addresses two CVEs:

Our team would like to thank

  • Jonathan Knudsen from the Synopsys Cybersecurity Research Center (CyRC)
  • Robert Chen from DeepSurface Security

for responsibly disclosing the vulnerabilities and helping assess and test
the patches.

Obtaining Packages

This is the first release in the post-Bintray era.
Because Bintray shut down on May 1st, 2021, this version is not distributed via Bintray.
From now on, releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

Erlang/OTP Compatibility Notes

This release is the last release to support Erlang 22.3.
Erlang 23 is highly recommended
for best forward compatibility with future RabbitMQ versions.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision a recent version of Erlang 23.x.

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

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

Core Server

Bug Fixes

  • Quorum queues did not take snapshots as frequently as they are expected to with some configurations.
    This resulted in much higher peak disk space usage for queues that did not have a meaningful backlog.

    GitHub issue: #2974

  • Quorum queue name was unintentionally limited: the length of virtual host and actual queue name
    was limited to 254 characters. Quorum queues that had longer names failed to be declared.

  • Deleting a quorum queue would leave some of its internal metrics data around.

    GitHub issue: #2846

  • Client destination address is now obtained w.r.t. the Proxy protocol settings.

    Contributed by @carlhoerberg (CloudAMQP).

    GitHub issue: #2942

Enhancements

  • Consumers that consume messages and do not acknowledge them will now have a 15 minute
    acknowledgement timeout applied to them by default. Operators can increase the timeout if necessary.

    Such consumers delay or even prevent on disk data compaction, which can run a node out of disk
    space much earlier than anticipated.

    GitHub issue: #2990

  • Channel interceptors now can return channel-level exceptions.

    Contributed by Ayanda @Ayanda-D Dube.

    GitHub issue: #2989

CLI Tools

Bug Fixes

  • rabbitmq-diagnostics status could run into an exception when formatting responses
    from nodes where high VM memory watermark was configured using advanced.config.

    GitHub issue: #2964

  • rabbitmq-queues rebalance will no longer pick nodes under maintenance
    as new queue leader placement candidates.

    GitHub issue: #2993

Enhancements

  • rabbitmq-diagnostics remote_shell is a new command that opens a remote Erlang shell
    to the target node. This simplifies troubleshooting of a running node.

    GitHub issue: #2860

  • rabbitmq-queues await_online_quorum_plus_one is now a no-op in a single node cluster
    since the command does not make sense when there is only one node.

    GitHub issue: #2890

Management Plugin

Bug Fixes

  • When a virtual host was created with tags via the HTTP API, the tags were unintentionally
    concatenated together.

    GitHub issue: #2982

  • More precise UI description for message consumption mode that is destructive (consumes in automatic acknowledgement mode).

    GitHub issue: #3011

AWS Peer Discovery Plugin

Enhancements

Auth Mechanism TLS Plugin

Enhancements

  • The plugin now has limited support for username extraction from SAN of type "other name".
    Note that the type by definition supports arbitrary values, so supporting all possible
    inputs is not realistic.

    Contributed by @Thibi2000.

    GitHub issue: #2983, #2985

Dependency Upgrades

There were no dependency changes.

Source Code Archives

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

RabbitMQ 3.8.15-rc.3

29 Apr 22:13

Choose a tag to compare

RabbitMQ 3.8.15-rc.3 Pre-release
Pre-release

RabbitMQ 3.8.15-rc.3

RabbitMQ 3.8.15-rc.3 is a maintenance release candidate.

Erlang/OTP Compatibility Notes

This is the first release in the post-Bintray era.
Because Bintray shuts down on May 1st, 2021, this version is not distributed via Bintray.
Instead, Cloudsmith and PackageCloud are used.

This release is the last release to support Erlang 22.3.
Erlang 23 is highly recommended
for best forward compatibility with future RabbitMQ versions.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision a recent version of Erlang 23.x.

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

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

Core Server

Bug Fixes

  • Quorum queues did not take snapshots as frequently as they are expected to with some configurations.
    This resulted in much higher peak disk space usage for queues that did not have a meaningful backlog.

    GitHub issue: #2974

  • Quorum queue name was unintentionally limited: the length of virtual host and actual queue name
    was limited to 254 characters. Quorum queues that had longer names failed to be declared.

  • Deleting a quorum queue would leave some of its internal metrics data around.

    GitHub issue: #2846

  • Client destination address is now obtained w.r.t. the Proxy protocol settings.

    Contributed by @carlhoerberg (CloudAMQP).

    GitHub issue: #2942

Enhancements

  • Quorum queue consumers that consume messages and do not acknowledge them will now have a 15 minute
    acknowledgement timeout applied to them by default. Operators can increase the timeout if necessary.

    Such consumers delay or even prevent on disk data compaction, which can run a node out of disk
    space much earlier than anticipated.

    GitHub issue: #2990

  • Channel interceptors now can return channel-level exceptions.

    Contributed by Ayanda @Ayanda-D Dube.

    GitHub issue: #2989

CLI Tools

Bug Fixes

  • rabbitmq-diagnostics status could run into an exception when formatting responses
    from nodes where high VM memory watermark was configured using advanced.config.

    GitHub issue: #2964

  • rabbitmq-queues rebalance will no longer pick nodes under maintenance
    as new queue leader placement candidates.

    GitHub issue: #2993

Enhancements

  • rabbitmq-diagnostics remote_shell is a new command that opens a remote Erlang shell
    to the target node. This simplifies troubleshooting of a running node.

    GitHub issue: #2860

  • rabbitmq-queues await_online_quorum_plus_one is now a no-op in a single node cluster
    since the command does not make sense when there is only one node.

    GitHub issue: #2890

Management Plugin

Bug Fixes

  • When a virtual host was created with tags via the HTTP API, the tags were unintentionally
    concatenated together.

    GitHub issue: #2982

  • More precise UI description for message consumption mode that is destructive (consumes in automatic acknowledgement mode).

    GitHub issue: #3011

AWS Peer Discovery Plugin

Enhancements

Auth Mechanism TLS Plugin

Enhancements

  • The plugin now has limited support for username extraction from SAN of type "other name".
    Note that the type by definition supports arbitrary values, so supporting all possible
    inputs is not realistic.

    Contributed by @Thibi2000.

    GitHub issue: #2983, #2985

Dependency Upgrades

There were no dependency changes.

Source Code Archives

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

RabbitMQ 3.8.15-rc.2

19 Apr 22:41

Choose a tag to compare

RabbitMQ 3.8.15-rc.2 Pre-release
Pre-release

RabbitMQ 3.8.15-rc.2

RabbitMQ 3.8.15-rc.2 is a maintenance release candidate.

Erlang/OTP Compatibility Notes

This is the first release in the post-Bintray era.
Because Bintray shuts down on May 1st, 2021, this version is not distributed via Bintray.

This release is the last release to support Erlang 22.3.
Erlang 23 is highly recommended
for best forward compatibility with future RabbitMQ versions.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision a recent version of Erlang 23.x.

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

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

Core Server

Bug Fixes

  • Quorum queues did not take snapshots as frequently as they are expected to with some configurations.
    This resulted in much higher peak disk space usage for queues that did not have a meaningful backlog.

    GitHub issue: #2974

  • Quorum queue name was unintentionally limited: the length of virtual host and actual queue name
    was limited to 254 characters. Quorum queues that had longer names failed to be declared.

  • Deleting a quorum queue would leave some of its internal metrics data around.

    GitHub issue: #2846

  • Client destination address is now obtained w.r.t. the Proxy protocol settings.

    Contributed by @carlhoerberg (CloudAMQP).

    GitHub issue: #2942

CLI Tools

Bug Fixes

  • rabbitmq-diagnostics status could run into an exception when formatting responses
    from nodes where high VM memory watermark was configured using advanced.config.

    GitHub issue: #2964

Enhancements

  • rabbitmq-diagnostics remote_shell is a new command that opens a remote Erlang shell
    to the target node. This simplifies troubleshooting of a running node.

    GitHub issue: #2860

  • rabbitmq-queues await_online_quorum_plus_one is now a no-op in a single node cluster
    since the command does not make sense when there is only one node.

    GitHub issue: #2890

Management Plugin

Bug Fixes

  • When a virtual host was created with tags via the HTTP API, the tags were unintentionally
    concatenated together.

    GitHub issue: #2982

AWS Peer Discovery Plugin

Enhancements

Auth Mechanism TLS Plugin

Enhancements

  • The plugin now has limited support for username extraction from SAN of type "other name".
    Note that the type by definition supports arbitrary values, so supporting all possible
    inputs is not realistic.

    Contributed by @Thibi2000.

    GitHub issue: #2983

Dependency Upgrades

There were no dependency changes.

Source Code Archives

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

RabbitMQ 3.8.14

02 Mar 16:51

Choose a tag to compare

RabbitMQ 3.8.14

RabbitMQ 3.8.14 is a maintenance release that restores
Erlang 22.3 compatibility for environments that use direct reply-to.

Erlang/OTP Compatibility Notes

This release requires Erlang 22.3.
Erlang 23 is highly recommended
for best forward compatibility with future RabbitMQ versions.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision a recent version of Erlang 23.x.

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

Upgrading to Erlang 22.x or Later Versions

When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.

Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.3 or 23.x, then RabbitMQ to the most recent 3.8.x release.

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

Core Server

Bug Fixes

  • Direct reply-to failed witn an exception on Erlang 22.3.
    Nodes running on Erlang 23 are not affected.

    GitHub issue: #2857

  • A warnings about async I/O threads was replaced with a similar one about dirty I/O
    schedulers. This keeps the message up with the settings used in modern Erlang releases.

    GitHub issue: #2854

Other

Enhancements

Dependency Upgrades

There were no dependency changes.

Source Code Archives

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

RabbitMQ 3.8.13

27 Feb 18:14

Choose a tag to compare

RabbitMQ 3.8.13

RabbitMQ 3.8.13 is a maintenance release.

Erlang/OTP Compatibility Notes

This release requires Erlang 22.3 or
Erlang 23.x.

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

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

Upgrading to Erlang 22.x or Later Versions

When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.

Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.

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

Core Server

Bug Fixes

  • Nodes that had an unusually long name (e.g. 150 or more characters) could overflow
    message property lengths with the direct reply-to identifier they generated.
    Now the generated values are almost entirely decoupled from node name length.

    GitHub issue: #2842

Management Plugin

Bug Fixes

  • Consumer utilisation metric has been renamed to consumer capacity which more accurately represents
    what it measures. The metric indicates the percentage of time that RabbitMQ has attempted a delivery
    to a consumer of a queue, and was allowed to do so by the channel prefetch value and
    the number of currently unacknowledged deliveries.

    For queues that have no consumers, the metric now returns 0%. For consumers that accept all deliveries
    attempted, the metric will be around 100% (optimal).

    For queues that do have consumers but no traffic the metric will be at 100%. The assumption here is that consumers
    can absorb all the load. This case is intentionally treated differently from the one above with no online consumers.

    GitHub issue: #2843

Prometheus Plugin

Bug Fixes

  • Consumer utilisation metric has been renamed to consumer capacity which more accurately represents
    what it measures. See a more detailed note above in the Management plugin section.

    GitHub issue: #2843

Federation Plugin

Enhancements

  • Quorum queues now can be federated.

    GitHub issue: #2756

  • Exchange federation now supports a new option, channel_use_mode, which allows a single
    channel to be used for all federation link activity if set to single:

    rabbitmqctl set_parameter federation-upstream dc-2 '{"uri":"amqp://dc2.messaging.coolcorp.local:5672", "channel-use-mode": "single"}'

    This helps avoid a race condition between topology changes and message flow
    and the cost of topology operations reducing message transfer rates and increasing
    rate variability.

    The default value is multiple. It means that every link will use multiple channels (one for message transfer,
    one for topology changes, etc), which has been the case since rabbitmq/rabbitmq-federation#97.
    This is the recommended mode for most environments, and all environments with a mostly static topology.

    See rabbitmq/rabbitmq-federation#97 for the background.

    GitHub issue: #2829

AMQP 1.0 Plugin

Bug Fixes

  • The plugin could run into unhandled exceptions.

    GitHub issue: #2830

OAuth 2 AuthN/AuthZ Backend

Enhancements

  • Several settings of the plugin are now exposed to rabbitmq.conf and provide validations:

    auth_backends.1 = oauth2
    auth_oauth2.resource_server_id = a_resource_server_id
    auth_oauth2.additional_scopes_key = a_custom_scope_key
    auth_oauth2.default_key = id1
    auth_oauth2.signing_keys.id1 = /path/to/signing.key1.pem
    auth_oauth2.signing_keys.id2 = /path/to/signing.key2.pem

    GitHub issue: #2550

  • JWT tokens now can be fetched from a JWKS endpoint provided using the rabbitmq_auth_backend_oauth2.key_config.jwks_url
    key in advanced.config.

    Contributed by Teo @teozkr Klestrup Röijezon.

    GitHub issue: #2791

Dependency Upgrades

Source Code Archives

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

RabbitMQ 3.8.12

16 Feb 13:58

Choose a tag to compare

RabbitMQ 3.8.12

RabbitMQ 3.8.12 is a maintenance release that contains bug fixes.

Erlang/OTP Compatibility Notes

This release requires Erlang 22 or
Erlang 23.

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

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

Upgrading to Erlang 22.x or Later Versions

When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.

Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.

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

Core Server

Bug Fixes

  • Maintenance mode no longer transfers leaders of classic mirrored queue.

    The original transfer implementation was not guaranteed to be safe when only a
    subset of cluster nodes hosted replicas. In addition, the process could take
    a lot of time in environments with a lot of classic mirrored queues, more
    than in case of node shutdown.

    Quorum queue leadership transfer is still performed as it is dramatically more
    efficient and never suffered from any downsides of leadership transfer of CMQs.

    GitHub issue: #2749

  • Exclusive queues that happen to be matched by classic queue mirroring policies
    will no longer be considered for rebalancing operations since they are not
    actually mirrored (the lifecycle is by design tied to a single client connection).

    GitHub issue: #2795

  • Default replica count for quorum queues was using an incorrect configuration key name.
    The default value is now 3, so in a cluster of five or seven nodes, only three
    will host replicas for newly declared quorum queues. One replica is the node to which
    the declaring client is connected to, two others are selected randomly.

    Declaring connections can control the number of replicas using the x-quorum-initial-group-size
    optional queue argument at declaration time.

    GitHub issue: #2759

  • Default runtime busy waiting settings were
    changed to none by default, which reduces CPU footprint on nodes that are mostly idle. The values
    can be overridden for workloads that benefit from different values.

    Contributed by @carlhoerberg (CloudAMQP)

    GitHub issue: #2803

  • Definition import now imports runtime parameters after exchanges, queues, and bindings
    to reduce the likelihood of starting dynamic Shovels from racing with topology
    imports.

    GitHub issue: #2798

  • Memory monitor could run into an exception if queried very early on node boot
    before it was fully initialized.

    Contributed by @tomyouyou.

    GitHub issue: #2733

Enhancements

  • rabbitmq.conf validation of TLS certificate and private key paths is now more thorough:
    it checks if the files have read or read/write permissions instead of checking if it can read
    the file's metadata.

    GitHub issue: #2685

CLI Tools

Enhancements

  • rabbitmqctl close_all_user_connections is a new command that closes all connections that
    authenticated using a specific username:

    rabbitmqctl close_all_user_connections "user-99fc15d3f" "closed to force reconnection"
    

    GitHub issue: #2715

Prometheus Plugin

Bug Fixes

  • AuthN authentication attempts metrics produced duplicate TYPE and HELP strings in
    the scraping API endpoint output.

    Some metrics were renamed to avoid duplication. The new names are auth_attempts_detailed_total,
    auth_attempts_detailed_succeeded_total, and auth_attempts_detailed_failed_total.

    This issue is specific to RabbitMQ 3.8.10 and 3.8.11.

    GitHub issue: #2740

LDAP Plugin

Enhancements

  • The plugin now supports two new configuration settings that control SNI and hostname verification
    behavior for TLS-enabled LDAP client connections:

    # leave out to keep the default behavior (exact hostname matching)
    auth_ldap.ssl_options.hostname_verification = wildcard
    
    # set to none to disable SNI
    auth_ldap.ssl_options.sni = a.rabbitmq.hostname.dev

    These changes are based on the research and suggestions from Patrick @patcable Cable.

    GitHub issue: #2805

Shovel Plugin

Enhancements

  • Dynamic Shovels now can specify optional queue arguments for
    the queues they declare. Note that these settings will not have any effects for cases where the plugin
    uses already existing queues.

    This allows for the Shovel-managed queues to be quorum. For the arguments
    that must not be provided at queue declaration time, policies
    is the right approach.

    The arguments are specified using the "" and "" arguments for source and destination queues, respectively:

    {
      "src-protocol": "amqp091",
      "src-uri": ["amqp://localhost"],
      "src-queue": "src-queue",
      "dest-protocol": "amqp091",
      "dest-uri": ["amqp://localhost"],
      "dest-queue": "dest-queue",
      "src-queue-args": {
        "x-queue-type": "quorum"
        },
      "dest-queue-args": {
        "x-queue-type": "quorum"
        }
      }

    GitHub issue: #2799

AuthN/AuthZ Cache Plugin

Enhancement

  • Cache operation timeout has been increased to 15s (same as the channel operation timeout in the core).
    This prevents sporadic timeouts in heavily loaded systems.

    GitHub issue: #2792

RabbitMQ Erlang Client

Bug Fixes

  • The client performed hostname resolution twice even if IP version preference was specified by the user.

    Contributed by Pawel @haljin Antemijczuk.

    GitHub issue: #2748

Dependency Upgrades

No dependency changes.

Source Code Archives

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

RabbitMQ 3.8.12-rc.3

19 Apr 23:02

Choose a tag to compare

RabbitMQ 3.8.12-rc.3 Pre-release
Pre-release

RabbitMQ 3.8.12-rc.3

RabbitMQ 3.8.15-rc.3 is a maintenance release candidate.

Erlang/OTP Compatibility Notes

This is the first release in the post-Bintray era.
Because Bintray shuts down on May 1st, 2021, this version is not distributed via Bintray.
Instead, Cloudsmith and PackageCloud are used.

This release is the last release to support Erlang 22.3.
Erlang 23 is highly recommended
for best forward compatibility with future RabbitMQ versions.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision a recent version of Erlang 23.x.

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

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

Core Server

Bug Fixes

  • Maintenance mode no longer transfers leaders of classic mirrored queue.

    The original transfer implementation was not guaranteed to be safe when only a
    subset of cluster nodes hosted replicas. In addition, the process could take
    a lot of time in environments with a lot of classic mirrored queues, more
    than in case of node shutdown.

    Quorum queue leadership transfer is still performed as it is dramatically more
    efficient and never suffered from any downsides of leadership transfer of CMQs.

    GitHub issue: #2749

  • Exclusive queues that happen to be matched by classic queue mirroring policies
    will no longer be considered for rebalancing operations since they are not
    actually mirrored (the lifecycle is by design tied to a single client connection).

    GitHub issue: #2795

  • Default replica count for quorum queues was using an incorrect configuration key name.
    The default value is now 3, so in a cluster of five or seven nodes, only three
    will host replicas for newly declared quorum queues. One replica is the node to which
    the declaring client is connected to, two others are selected randomly.

    Declaring connections can control the number of replicas using the x-quorum-initial-group-size
    optional queue argument at declaration time.

    GitHub issue: #2759

  • Default runtime busy waiting settings were
    changed to none by default, which reduces CPU footprint on nodes that are mostly idle. The values
    can be overridden for workloads that benefit from different values.

    Contributed by @carlhoerberg (CloudAMQP)

    GitHub issue: #2803

  • Definition import now imports runtime parameters after exchanges, queues, and bindings
    to reduce the likelihood of starting dynamic Shovels from racing with topology
    imports.

    GitHub issue: #2798

  • Memory monitor could run into an exception if queried very early on node boot
    before it was fully initialized.

    Contributed by @tomyouyou.

    GitHub issue: #2733

Enhancements

  • rabbitmq.conf validation of TLS certificate and private key paths is now more thorough:
    it checks if the files have read or read/write permissions instead of checking if it can read
    the file's metadata.

    GitHub issue: #2685

CLI Tools

Enhancements

  • rabbitmqctl close_all_user_connections is a new command that closes all connections that
    authenticated using a specific username:

    rabbitmqctl close_all_user_connections "user-99fc15d3f" "closed to force reconnection"
    

    GitHub issue: #2715

Prometheus Plugin

Bug Fixes

  • AuthN authentication attempts metrics produced duplicate TYPE and HELP strings in
    the scraping API endpoint output.

    Some metrics were renamed to avoid duplication. The new names are auth_attempts_detailed_total,
    auth_attempts_detailed_succeeded_total, and auth_attempts_detailed_failed_total.

    This issue is specific to RabbitMQ 3.8.10 and 3.8.11.

    GitHub issue: #2740

LDAP Plugin

Enhancements

  • The plugin now supports two new configuration settings that control SNI and hostname verification
    behavior for TLS-enabled LDAP client connections:

    # leave out to keep the default behavior (exact hostname matching)
    auth_ldap.ssl_options.hostname_verification = wildcard
    
    # set to none to disable SNI
    auth_ldap.ssl_options.sni = a.rabbitmq.hostname.dev

    These changes are based on the research and suggestions from Patrick @patcable Cable.

    GitHub issue: #2805

Shovel Plugin

Enhancements

  • Dynamic Shovels now can specify optional queue arguments for
    the queues they declare. Note that these settings will not have any effects for cases where the plugin
    uses already existing queues.

    This allows for the Shovel-managed queues to be quorum. For the arguments
    that must not be provided at queue declaration time, policies
    is the right approach.

    The arguments are specified using the "" and "" arguments for source and destination queues, respectively:

    {
      "src-protocol": "amqp091",
      "src-uri": ["amqp://localhost"],
      "src-queue": "src-queue",
      "dest-protocol": "amqp091",
      "dest-uri": ["amqp://localhost"],
      "dest-queue": "dest-queue",
      "src-queue-args": {
        "x-queue-type": "quorum"
        },
      "dest-queue-args": {
        "x-queue-type": "quorum"
        }
      }

    GitHub issue: #2799

AuthN/AuthZ Cache Plugin

Enhancement

  • Cache operation timeout has been increased to 15s (same as the channel operation timeout in the core).
    This prevents sporadic timeouts in heavily loaded systems.

    GitHub issue: #2792

RabbitMQ Erlang Client

Bug Fixes

  • The client performed hostname resolution twice even if IP version preference was specified by the user.

    Contributed by Pawel @haljin Antemijczuk.

    GitHub issue: #2748

Dependency Upgrades

No dependency changes.

Source Code Archives

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

RabbitMQ 3.8.12-rc.1

03 Feb 13:45

Choose a tag to compare

RabbitMQ 3.8.12-rc.1 Pre-release
Pre-release

RabbitMQ 3.8.12-rc.1

RabbitMQ 3.8.12-rc.1 is a preview of a maintenance release that contains bug fixes.

Erlang/OTP Compatibility Notes

This release requires Erlang 22 or
Erlang 23.

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

Upgrade and Compatibility Notes

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

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

Upgrading to Erlang 22.x or Later Versions

When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.

Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.

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

Core Server

Bug Fixes

  • Maintenance mode no longer transfers leaders of classic mirrored queue.

    The original transfer implementation was not guaranteed to be safe when only a
    subset of cluster nodes hosted replicas. In addition, the process could take
    a lot of time in environments with a lot of classic mirrored queues, more
    than in case of node shutdown.

    Quorum queue leadership transfer is still performed as it is dramatically more
    efficient and never suffered from any downsides of leadership transfer of CMQs.

    GitHub issue: #2749

  • Default replica count for quorum queues was using an incorrect configuration key name.
    The default value is now 3, so in a cluster of five or seven nodes, only three
    will host replicas for newly declared quorum queues. One replica is the node to which
    the declaring client is connected to, two others are selected randomly.

    Declaring connections can control the number of replicas using the x-quorum-initial-group-size
    optional queue argument at declaration time.

    GitHub issue: #2759

  • Memory monitor could run into an exception if queried very early on node boot
    before it was fully initialized.

    Contribute @tomyouyou.

    GitHub issue: #2733

Enhancements

  • rabbitmq.conf validation of TLS certificate and private key paths is now more thorough:
    it checks if the files have read or read/write permissions instead of checking if it can read
    the file's metadata.

    GitHub issue: #2685

CLI Tools

Enhancements

  • rabbitmqctl close_all_user_connections is a new command that closes all connections that
    authenticated using a specific username:

    rabbitmqctl close_all_user_connections "user-99fc15d3f" "closed to force reconnection"
    

    GitHub issue: #2715

Prometheus Plugin

Bug Fixes

  • AuthN authentication attempts metrics produced duplicate TYPE and HELP strings in
    the scraping API endpoint output.

    Some metrics were renamed to avoid duplication. The new names are auth_attempts_detailed_total,
    auth_attempts_detailed_succeeded_total, and auth_attempts_detailed_failed_total.

    This issue is specific to RabbitMQ 3.8.10 and 3.8.11.

    GitHub issue: #2740

RabbitMQ Erlang Client

Bug Fixes

  • The client performed hostname resolution twice even if IP version preference was specified by the user.

    Contributed by Pawel @haljin Antemijczuk.

    GitHub issue: #2748

Dependency Upgrades

Source Code Archives

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