Skip to content

Releases: rabbitmq/rabbitmq-server

RabbitMQ 3.8.6

04 Aug 10:47

Choose a tag to compare

RabbitMQ 3.8.6

RabbitMQ 3.8.6 is a maintenance release.
It focuses on bug fixes and usability improvements.

RabbitMQ Adopts the Mozilla Public License 2.0

Starting with this release, core RabbitMQ server and all tier 1 plugins
are relicensed under the Mozilla Public License 2.0
(previously used license: the Mozilla Public License 1.1).

The permissiveness of the MPL 2.0 is largely the same as of the MPL 1.1.
See the MPL 2.0 FAQ and
MPL 2.0 Revision and Changes FAQ to learn more.

Erlang 23 Compatibility

This release is compatible with Erlang 23.

Erlang/OTP Compatibility Notes

This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.

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

Deprecations

This release removed HiPE precompilation support. HiPE has been deprecated and
mostly unmaintained since Erlang 22, and will be replaced with a JIT in Erlang 24
in 2021.

rabbitmqctl hipe_compile

and

hipe_compile = true

are both retained for backwards compatibility but they won't have any effect.

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release.

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

Upgrading to Erlang 21.x or Later Versions

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

Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to 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.

Changes Worth Mentioning

Core Server

License Change

RabbitMQ has been relicensed under the Mozilla Public License 2.0
(previously used license: the Mozilla Public License 1.1).

The permissiveness of the MPL 2.0 is largely the same as of the MPL 1.1.
See the MPL 2.0 FAQ and
MPL 2.0 Revision and Changes FAQ to learn more.

Deprecations

Bug Fixes

  • Definition import on node boot (via the built-in load_definitions configuration setting) is now performed
    after plugins are enabled.

    This resolves a long-standing chicken-and-egg dependency problem that prevented definitions
    that depend on plugins being functional from being successfully imported during node boot.

Note that definition import via the management plugin (management.load_definitions) is still
performed during management plugin activation time and therefore can not offer any guarantees
as some plugins may be enabled after the management one.

Some affected features include

GitHub issue: rabbitmq/rabbitmq-server#2384

  • Similarly, client connection listeners (both TCP and TLS-enabled) are now started after
    plugin activation. This makes certain configurations that use the trust store plugin
    behave as expected.

    GitHub issue: rabbitmq/rabbitmq-server#2405

  • Environment variables prefixed with RABBITMQ_ were ignored when used in the rabbitmq-env.conf file,
    while their prefixless counterparts worked as expected.

    GitHub issue: rabbitmq/rabbitmq-common#401

Enhancements

CLI Tools

Deprecations

Bug Fixes

Enhancements

  • rabbitmq-queues check_if_node_is_quorum_critical and rabbitmq-queues check_if_node_is_mirror_sync_critical checks
    have been adjusted. They now special case single node clusters as the check does not make much sense
    in those environments.

    rabbitmq-queues check_if_node_is_mirror_sync_critical now also excludes exclusive queues from
    consideration as they, even if matched by a policy that enables classic queue mirroring,
    would not actually be mirrored.

    GitHub issue: rabbitmq/rabbitmq-cli#432

  • rabbitmq-diagnostics status now includes the total amount of memory used by the node in its
    regular output. It was previously only available when --formatter=json switch was used.

    GitHub issue: rabbitmq/rabbitmq-cli#449

  • rabbitmq-diagnostics erlang_cookie_sources is a new command that helps with troubleshooting
    CLI tool authentication to nodes by listing relevant environment information about the
    shared secret. The actual secret
    is not displayed for obvious security reasons.

    GitHub issue: rabbitmq/rabbitmq-cli#446

  • rabbitmqct eval_file is a new command that evaluates Erlang code expressions from a local file
    on the target node:

    rabbitmqctl eval_file /path/to/code_snippet.escript

    GitHub issue: rabbitmq/rabbitmq-cli#438

  • rabbitmqct eval now accepts code snippets from standard input:

    rabbitmqctl eval <<EOF
     io:format("~p~n", [
         rabbit:product_info()
     ]).
    rabbitmqctl eval < code_snippet.escript

    GitHub issue: rabbitmq/rabbitmq-cli#438

  • rabbitmq-diagnostics resolve_hostname is a new command that resolves a hostname either locally
    or on the node, and returns the resolved IPv4 or IPv6 addresses.

    The command can help quickly detect hostname resolution irregularities on a node, including
    the effects of Erlang inetrc file settings.
    Hostname resolution issues can cause CLI tools, cluster formation and peer reconnection to
    not work as expected.

    Some examples:

    rabbitmq-diagnostics resolve_hostname "google.com" --address-family ipv4
    
    rabbitmq-diagnostics resolve_hostname "google.com" --address-family ipv6 --offline

    GitHub issue: rabbitmq/rabbitmq-cli#431

  • All CLI tools now provide an autocomplete [prefix] command that lists command completion
    options. It is intended to be used to implement autocompletion of command names in shells.

    GitHub issue: rabbitmq/rabbitmq-cli#439

#...

Read more

RabbitMQ 3.8.6-rc.1

28 Jul 01:32

Choose a tag to compare

RabbitMQ 3.8.6-rc.1 Pre-release
Pre-release

RabbitMQ 3.8.6-rc.1

RabbitMQ 3.8.6-rc.1 is a preview of a maintenance release.
It focuses on bug fixes and usability improvements.

RabbitMQ Adopts the Mozilla Public License 2.0

Starting with this release, core RabbitMQ server and all tier 1 plugins
are relicensed under the Mozilla Public License 2.0
(previously used license: the Mozilla Public License 1.1).

The permissiveness of the MPL 2.0 is largely the same as of the MPL 1.1.
See the MPL 2.0 FAQ and
MPL 2.0 Revision and Changes FAQ to learn more.

Erlang 23 Compatibility

This release is compatible with Erlang 23.

Erlang/OTP Compatibility Notes

This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.

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

Deprecations

This release removed HiPE precompilation support. HiPE has been deprecated and
mostly unmaintained since Erlang 22, and will be replaced with a JIT in Erlang 24
in 2021.

rabbitmqctl hipe_compile

and

hipe_compile = true

are both retained for backwards compatibility but they won't have any effect.

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release.

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

Upgrading to Erlang 21.x or Later Versions

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

Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to 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.

Changes Worth Mentioning

Core Server

License Change

RabbitMQ has been relicensed under the Mozilla Public License 2.0
(previously used license: the Mozilla Public License 1.1).

The permissiveness of the MPL 2.0 is largely the same as of the MPL 1.1.
See the MPL 2.0 FAQ and
MPL 2.0 Revision and Changes FAQ to learn more.

Deprecations

Bug Fixes

  • Definition import on node boot (via load_definitions configuration setting) is now performed
    after plugins are enabled.

    This resolves a long standing chicken-and-egg dependency problem that prevented definitions
    that depend on plugins being functional from being successfully imported during node boot.

    Some affected features include

    GitHub issue: rabbitmq/rabbitmq-server#2384

  • Similarly, client connection listeners (both TCP and TLS-enabled) are now started after
    plugin activation. This makes certain configurations that use the trust store plugin
    behave as expected.

    GitHub issue: rabbitmq/rabbitmq-server#2405

  • Environment variables prefixed with RABBITMQ_ were ignored when used in the rabbitmq-env.conf file,
    while their prefixless counterparts worked as expected.

    GitHub issue: rabbitmq/rabbitmq-common#401

Enhancements

CLI Tools

Deprecations

Bug Fixes

Enhancements

  • rabbitmq-queues check_if_node_is_quorum_critical and rabbitmq-queues check_if_node_is_mirror_sync_critical checks
    have been adjusted. They now special case single node clusters as the check does not make much sense
    in those environments.

    rabbitmq-queues check_if_node_is_mirror_sync_critical now also excludes exclusive queues from
    consideration as they, even if matched by a policy that enables classic queue mirroring,
    would not actually be mirrored.

    GitHub issue: rabbitmq/rabbitmq-cli#432

  • rabbitmq-diagnostics erlang_cookie_sources is a new command that helps with troubleshooting
    CLI tool authentication to nodes by listing relevant environment information about the
    shared secret. The actual secret
    is not displayed for obvious security reasons.

    GitHub issue: rabbitmq/rabbitmq-cli#446

  • rabbitmqct eval_file is a new command that evaluates Erlang code expressions from a local file
    on the target node:

    rabbitmqctl eval_file /path/to/code_snippet.escript

    GitHub issue: rabbitmq/rabbitmq-cli#438

  • rabbitmqct eval now accepts code snippets from standard input:

    rabbitmqctl eval <<EOF
     io:format("~p~n", [
         rabbit:product_info()
     ]).
    rabbitmqctl eval < code_snippet.escript

    GitHub issue: rabbitmq/rabbitmq-cli#438

  • rabbitmq-diagnostics resolve_hostname is a new command that resolves a hostname either locally
    or on the node, and returns the resolved IPv4 or IPv6 addresses.

    The command can help quickly detect hostname resolution irregularities on a node, including
    the effects of Erlang inetrc file settings.
    Hostname resolution issues can cause CLI tools, cluster formation and peer reconnection to
    not work as expected.

    Some examples:

    rabbitmq-diagnostics resolve_hostname "google.com" --address-family ipv4
    
    rabbitmq-diagnostics resolve_hostname "google.com" --address-family ipv6 --offline

    GitHub issue: rabbitmq/rabbitmq-cli#431

  • All CLI tools now provide an autocomplete [prefix] command that lists command completion
    options. It is intended to be used to implement autocompletion of command names in shells.

    GitHub issue: rabbitmq/rabbitmq-cli#439

Management Plugin

Bug Fixes

Enhancements

Read more

RabbitMQ 3.7.27

24 Jul 18:39

Choose a tag to compare

RabbitMQ 3.7.27

RabbitMQ 3.7.27 is a maintenance release. It contains a couple of backports
from the 3.8.x branch.

RabbitMQ 3.7.x series are out of general support and covered by the limited extended support policy only.

Please consider upgrading to RabbitMQ 3.8.x.

Erlang/OTP Compatibility Notes

This release no longer supports Erlang/OTP 20.3.
Erlang 21.3+ is now a hard requirement checked on node startup.

Make sure a supported Erlang version is used before upgrading.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 21.3.x and 22.x.

Compatibility Notes

Upgrading to Erlang 21.x or Later Versions

When upgrading to this release and upgrading Erlang to 21.x or later at the same time, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded before Erlang.

Upgrade Doc Guides and Change Log

See 3.7.0 release notes upgrade
and compatibility notes first if upgrading from an earlier release.

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.

Changes

Core Server

Enhancements

  • More peer discovery errors are retried.

    GitHub issue: rabbitmq/rabbitmq-server#1627

  • Initial Erlang/OTP 24 compatibility.

    Erlang/OTP 24 is expected to ship in mid-2021. While RabbitMQ 3.7 will be out of support by then,
    some initial compatibility work was backported to this branch due to contious integration on Erlang/OTP master.

Federation Plugin

Bug Fixes

  • One-off connections periodically used by exchange federation links now handle timeouts in certain
    operations gracefully. This avoids unnecessary link disruption and restarts in certain environments.
    The default interval has also been bumped from 30s to 90s.

    In environments with stable topologies the interval can be significantly increased to decrease connection
    churn, simplify monitoring and in general conserve some resources:

    %% advanced.config
    [
     {rabbitmq_federation, [
         %% 86400 seconds or 24 hours
         {internal_exchange_check_interval, 86400000}
     ]}
    ].

    GitHub issue: rabbitmq/rabbitmq-federation#107

Source code archives

Warning: The source code archive provided by GitHub only contains the source of the broker,
not the plugins or the client libraries. Please download the archive named rabbitmq-server-3.7.27.tar.xz.

RabbitMQ 3.7.27-rc.1

25 Jun 00:53

Choose a tag to compare

RabbitMQ 3.7.27-rc.1 Pre-release
Pre-release

RabbitMQ 3.7.27-rc.1

RabbitMQ 3.7.27-rc.1 is a preview of a maintenance release. It focuses on bug fixes.

RabbitMQ 3.7.x series are out of general support and covered by the limited extended support policy.

Please consider upgrading to RabbitMQ 3.8.x.

Erlang/OTP Compatibility Notes

This release no longer supports Erlang/OTP 20.3.
Erlang 21.3+ is now a hard requirement checked on node startup.

Make sure a supported Erlang version is used before upgrading.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 21.3.x and 22.x.

Compatibility Notes

Upgrading to Erlang 21.x or Later Versions

When upgrading to this release and upgrading Erlang to 21.x or later at the same time, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded before Erlang.

Upgrade Doc Guides and Change Log

See 3.7.0 release notes upgrade
and compatibility notes first if upgrading from an earlier release.

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.

Changes

Federation Plugin

Bug Fixes

  • One-off connections periodically used by exchange federation links now handle timeouts in certain
    operations gracefully. This avoids unnecessary link disruption and restarts in certain environments.
    The default interval has also been bumped from 30s to 90s.

    In environments with stable topologies the interval can be significantly increased to decrease connection
    churn, simplify monitoring and in general conserve some resources:

    %% advanced.config
    [
     {rabbitmq_federation, [
         %% 86400 seconds or 24 hours
         {internal_exchange_check_interval, 86400000}
     ]}
    ].

    GitHub issue: rabbitmq/rabbitmq-federation#107

Source code archives

Warning: The source code archive provided by GitHub only contains the source of the broker,
not the plugins or the client libraries. Please download the archive named rabbitmq-server-3.7.27.tar.xz.

RabbitMQ 3.8.5

15 Jun 15:08

Choose a tag to compare

RabbitMQ 3.8.5

RabbitMQ 3.8.5 is a maintenance release.
It focuses on bug fixes and usability improvements.

This release is compatible with Erlang 23.

Erlang/OTP Compatibility Notes

This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.

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

Deprecations

This release deprecates rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check).
See the section on CLI tools changes below to learn more.

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release.

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

Upgrading to Erlang 21.x or Later Versions

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

Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to 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.

Changes Worth Mentioning

Core Server

Bug Fixes

Enhancements

  • Raft data directory now can be configured using ra.data_dir configuration key:

    ra.data_dir = /path/to/raft/data/directory

    GitHub issue: rabbitmq/rabbitmq-server#2354

  • User and permission management operations now produce clear log entries when they succeed,
    not just when they fail. This helps auditing in environments that have stricter security and audit
    requirements.

    GitHub issue: rabbitmq/rabbitmq-server#2363

CLI Tools

Bug Fixes

Deprecations

  • rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check) is deprecated and will be
    removed in a future version.

    node_health_check (as well as its HTTP API counterpart) is an opinionated, intrusive, aspirational attempt
    at producing One True Health Check™ for RabbitMQ that was envisioned and added to CLI tools around 2015-2016.

    It has proven to be too prone to false positives, can consume a prohibitive
    amount of CPU and runtime scheduler resources, and tends to be too opinionated
    for many technical operations teams.

    A much more modular, pick-and-choose approach has been adopted since
    but this command has never been deprecated. Until now.

    GitHub issue: rabbitmq/rabbitmq-cli#426

Management Plugin

Bug Fixes

Consistent Hashing Exchange

Bug Fixes

  • Due to later plugin activation in 3.8.4, durable
    consistent hashing exchanges were skipped during topology recovery. In practice that meant these exchanges
    did not route messages published to it.

    Now the plugin reconstructs consistent hashing ring manually for every durable exchange of this type and
    routing functions as expected.

    Kudos to Rob Gerritsen and Raimond @rai69 Kuipers for helping with discovery of this issue.

    GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#45

Enhancements

  • rabbitmq-diagnostics consistent_hash_exchange_ring_state <exchange> is a new CLI command that makes it
    easy to inspect consistent hashing ring state for an exchange.

    GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#47

MQTT Plugin

Bug Fixes

Web STOMP Plugin

Enhacenements

AWS Peer Discovery Plugin

Enhancements

  • AWS peer discovery backend can be specified as aws:

    cluster_formation.peer_discovery_backend = aws

    as well as the module name, or plugin name (rabbitmq_peer_discovery_aws):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_aws

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-aws#34

Consul Peer Discovery Plugin

Enhancements

  • Consul peer discovery backend can be specified as consul:

    cluster_formation.peer_discovery_backend = consul

    as well as the module name, or plugin name (rabbitmq_peer_discovery_consul):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_consul

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-consul#43

etcd Peer Discovery Plugin

Bug Fixes

Enhancements

  • etcd peer discovery backend can be specified as etcd:

    cluster_formation.peer_discovery_backend = etcd

    as well as the module name, or plugin name (rabbitmq_peer_discovery_etcd):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_etcd

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#26

Kubernetes Peer Discovery Plugin

Enhancements

  • Kubernetes peer discovery backend can be specified as k8s or kubernetes:

    cluster_formation.peer_discovery_backend = k8s

    as well as the module name, or plugin name (rabbitmq_peer_discovery_k8s):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-k8s#65

Web STOMP Plugin

###...

Read more

RabbitMQ 3.8.5-rc.2

14 Jun 09:51

Choose a tag to compare

RabbitMQ 3.8.5-rc.2 Pre-release
Pre-release

RabbitMQ 3.8.5-rc.2

RabbitMQ 3.8.5-rc.2 is a maintenance release candidate.
It focuses on bug fixes and usability improvements.

This release is compatible with Erlang 23.

Erlang/OTP Compatibility Notes

This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.

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

Deprecations

This release deprecates rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check).
See the section on CLI tools changes below to learn more.

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and
compatibility notes first if upgrading from an earlier release.

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

Upgrading to Erlang 21.x or Later Versions

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

Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded at the same time as Erlang.

Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to 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.

Changes Worth Mentioning

Core Server

Bug Fixes

Enhancements

  • Raft data directory now can be configured using ra.data_dir configuration key:

    ra.data_dir = /path/to/raft/data/directory

    GitHub issue: rabbitmq/rabbitmq-server#2354

  • User and permission management operations now produce clear log entries when they succeed,
    not just when they fail. This helps auditing in environments that have stricter security and audit
    requirements.

    GitHub issue: rabbitmq/rabbitmq-server#2363

CLI Tools

Bug Fixes

Deprecations

  • rabbitmq-diagnostics node_health_check (née rabbitmqctl node_health_check) is deprecated and will be
    removed in a future version.

    node_health_check (as well as its HTTP API counterpart) is an opinionated, intrusive, aspirational attempt
    at producing One True Health Check™ for RabbitMQ that was envisioned and added to CLI tools around 2015-2016.

    It has proven to be too prone to false positives, can consume a prohibitive
    amount of CPU and runtime scheduler resources, and tends to be too opinionated
    for many technical operations teams.

    A much more modular, pick-and-choose approach has been adopted since
    but this command has never been deprecated. Until now.

    GitHub issue: rabbitmq/rabbitmq-cli#426

Management Plugin

Bug Fixes

Consistent Hashing Exchange

Bug Fixes

  • Due to later plugin activation in 3.8.4, durable
    consistent hashing exchanges were skipped during topology recovery. In practice that meant these exchanges
    did not route messages published to it.

    Now the plugin reconstructs consistent hashing ring manually for every durable exchange of this type and
    routing functions as expected.

    Kudos to Rob Gerritsen and Raimond @rai69 Kuipers for helping with discovery of this issue.

    GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#45

Enhancements

  • rabbitmq-diagnostics consistent_hash_exchange_ring_state <exchange> is a new CLI command that makes it
    easy to inspect consistent hashing ring state for an exchange.

    GitHub issue: rabbitmq/rabbitmq-consistent-hash-exchange#47

MQTT Plugin

Bug Fixes

Web STOMP Plugin

Enhacenements

AWS Peer Discovery Plugin

Enhancements

  • AWS peer discovery backend can be specified as aws:

    cluster_formation.peer_discovery_backend = aws

    as well as the module name, or plugin name (rabbitmq_peer_discovery_aws):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_aws

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-aws#34

Consul Peer Discovery Plugin

Enhancements

  • Consul peer discovery backend can be specified as consul:

    cluster_formation.peer_discovery_backend = consul

    as well as the module name, or plugin name (rabbitmq_peer_discovery_consul):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_consul

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-consul#43

etcd Peer Discovery Plugin

Bug Fixes

Enhancements

  • etcd peer discovery backend can be specified as etcd:

    cluster_formation.peer_discovery_backend = etcd

    as well as the module name, or plugin name (rabbitmq_peer_discovery_etcd):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_etcd

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#26

Kubernetes Peer Discovery Plugin

Enhancements

  • Kubernetes peer discovery backend can be specified as k8s or kubernetes:

    cluster_formation.peer_discovery_backend = k8s

    as well as the module name, or plugin name (rabbitmq_peer_discovery_k8s):

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-k8s#65

Web...

Read more

RabbitMQ 3.8.4

25 May 16:00

Choose a tag to compare

RabbitMQ 3.8.4

RabbitMQ 3.8.4 is a maintenance release. It focuses on bug fixes and usability
improvements. etcd peer discovery plugin includes potentially breaking changes which are covered in detail below.

This is the first release to be fully compatible with Erlang 23.

Erlang/OTP Compatibility Notes

This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.

This is the first release to officially support Erlang 23. Compared to 3.8.3, which
generally works as expected on Erlang 23, Prometheus monitoring plugin had to
be adapted to support a memory allocator metric format that has changed compared to
earlier Erlang releases.

There is one remaining known Erlang 23 incompatibility: rabbitmq-diagnostics observer will fail on Erlang 23.
This will be addressed in a future release.
The root cause is the same memory allocator metric change.

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

Raft Segment File Format Change

In earlier 3.8.x versions, Raft log segment files were unintentionally limited to 4 GiB,
which can be problematic for environments that use quorum queues and medimum to large message
payloads.

This releases removes the limitation by changing the segment file on-disk format.
While no action is required for upgrading to 3.8.4, operators should keep in mind
that segment files produced by 3.8.4 nodes won't be readable by earlier versions.
In other words, this release does not support downgrading to earlier 3.8.x versions.

Custom Prefixless Node Name

Environments that override node name using NODENAME in rabbitmq-env.conf may have to
also define RABBITMQ_NODENAME in the same file for CLI tools to pick the value up:

# how node name is typically overridden in rabbitmq-env.conf[.bat] files
NODENAME[email protected]
# for CLI tools in 3.8.4, otherwise not necessary
RABBITMQ_NODENAME[email protected]

This behaviour change compared to earlier 3.8.x version was not intentional and was
corrected for 3.8.5.

Alternatively, it is possible to provide target node name using a command line flag:

rabbitmq-diagnostics -n [email protected] status

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and compatibility notes first if upgrading from an earlier release.

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

Upgrading to Erlang 21.x or Later Versions

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

Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later, RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to 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.

Changes Worth Mentioning

Core Server

Bug Fixes

  • A node recovering a large disk backlog did not throttle its recovery activity, potentially
    using large amounts of memory at peak during recovery.

    GitHub issue: rabbitmq/rabbitmq-server#2254

  • Raft log segment files were unintentionally limited to 4 GiB in size, which could result
    in failing log flush operations in environments where medium and large messages were published to
    quorum queues.

    This problem is addressed by a change to the on disk format of Raft log segment files.
    The change is irreversible, meaning that there is no downgrade path from 3.8.4 to earlier releases.

    GitHub issue: rabbitmq/ra#176

  • A reached delivery limit on a quorum queue could result in an exception for polling (basic.get) consumers.

    GitHub issue: rabbitmq/rabbitmq-server#2330

  • A publish to a quorum queue that happened to not have an elected leader failed with an exception.
    Such operations are generally expected to be retried by channels.

    GitHub issue: rabbitmq/rabbitmq-server#2295

  • Separate authN and authZ backends did not behave as expected when rabbitmq_auth_backend_cache was enabled.

    GitHub issue: rabbitmq/rabbitmq-server#2322

  • Handle a condition where epmd connection was closed during node registration.

    GitHub issue: rabbitmq/rabbitmq-server#2332

  • Registering a quorum queue consumer did not result in a consumer.created event like it would
    for classic queues.

    GitHub issue: rabbitmq/rabbitmq-server#2341

Enhancements

CLI Tools

Enhancements

  • New rabbitmq-upgrade commands: await_online_quorum_plus_one and await_online_synchronized_mirror.
    The commands will wait for a safe quorum of nodes (quorum queues) or a synchronised master replica (classic mirrored queues)
    to be or come online within a period of time.

    # Exits with a non-zero exit code if there is not a quorum + 1 of nodes online for all
    # quorum queues within 120 seconds (default timeout)
    rabbitmq-upgrade await_online_quorum_plus_one
    # Will wait for a quorum + 1 of nodes to be online for all quorum queues for 0 seconds...
    
    # The timeout can be adjusted via the -t flag:
    rabbitmq-upgrade await_online_quorum_plus_one -t 60
    # Will wait for a quorum + 1 of nodes to be online for all quorum queues for 60 seconds...
    
    # There is an equivalent command for classic mirrored queues
    rabbitmq-upgrade await_online_synchronized_mirror

    GitHub issue: rabbitmq/rabbitmq-cli#409

  • New rabbitmq-diagnostics command: os_env

    GitHub issue: rabbitmq/rabbitmq-cli#412

Prometheus Plugin

Enhancements

Federation Plugin

Bug Fixes

  • Credential obfuscation now uses the same shared secret
    on all nodes to make sure that a link running on node A can be restarted by a command against node B.
    Previously each node used its own generated secret for obfuscation, which means certain operations
    on links originated on other nodes were not possible.

    GitHub issue: rabbitmq/rabbitmq-server#2351

Enhancements

  • Internal resources cleanup is now more selective on abnormal link termination. A new upstream parameter, resource-cleanup-mode,
    can be set to "never" used to prevent internal queues from being deleted by exchange federation links on ...
Read more

RabbitMQ 3.8.4-rc.3

20 May 01:42
f8faae7

Choose a tag to compare

RabbitMQ 3.8.4-rc.3 Pre-release
Pre-release

RabbitMQ 3.8.4-rc.3

RabbitMQ 3.8.4-rc.3 is a preview of a maintenance release. It focuses on bug fixes and usability
improvements. etcd peer discovery plugin includes potentially breaking changes which are covered in detail below.

This is the first release to be fully compatible with Erlang 23.

Erlang/OTP Compatibility Notes

This is the first release to officially support Erlang 23. Compared to 3.8.3, which
generally works as expected on Erlang 23, it adapts Prometheus monitoring plugin to support
a memory allocator metric format that has changed compared to earlier Erlang releases.

This release requires Erlang/OTP 21.3 or later.
22.3 or 23.0 releases are recommended.

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

Raft Segment File Format Change

In earlier 3.8.x versions, Raft log segment files were unintentionally limited to 4 GiB,
which can be problematic for environments that use quorum queues and medimum to large message
payloads.

This releases removes the limitation by changing the segment file on disk format.
While no action is required for upgrading to 3.8.4, operators should keep in mind
that segment files produced by 3.8.4 nodes won't be readable by earlier versions.
In other words, this release does not support downgrading to earlier 3.8.x versions.

Upgrade Doc Guides and Change Log

See 3.8.0 release notes upgrade and compatibility notes first if upgrading from an earlier release.

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

Upgrading to Erlang 21.x or Later Versions

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

Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later, RabbitMQ must be upgraded at the same time as Erlang.
Alternatively the node can be upgraded to 3.7.18 first, then Erlang 22.x or 23.x, then RabbitMQ to 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.

Changes Worth Mentioning

Core Server

Bug Fixes

  • A node recovering a large disk backlog did not throttle its recovery activity, potentially
    using large amounts of memory at peak during recovery.

    GitHub issue: rabbitmq/rabbitmq-server#2254

  • Raft log segment files were unintentionally limited to 4 GiB in size, which could result
    in failing log flush operations in environments where medium and large messages were published to
    quorum queues.

    This problem is addressed by a change to the on disk format of Raft log segment files.
    The change is irreversible, meaning that there is no downgrade path from 3.8.4 to earlier releases.

    GitHub issue: rabbitmq/ra#176

  • A reached delivery limit on a quorum queue would result in an exception for polling (basic.get) consumers.

    GitHub issue: rabbitmq/rabbitmq-server#2330

  • A publish to a quorum queue that happened to not have an elected leader failed with an exception.
    Such operations are generally expected to be retried by channels.

    GitHub issue: rabbitmq/rabbitmq-server#2295

  • Separate authN and authZ backends did not behave as expected when rabbitmq_auth_backend_cache was enabled.

    GitHub issue: rabbitmq/rabbitmq-server#2322

  • Handle a condition where epmd connection was closed during node registration.

    GitHub issue: rabbitmq/rabbitmq-server#2332

  • Registering a quorum queue consumer did not result in a consumer.created event like it would
    for classic queues.

    GitHub issue: rabbitmq/rabbitmq-server#2341

Enhancements

CLI Tools

Enhancements

  • New rabbitmq-upgrade commands: await_online_quorum_plus_one and await_online_synchronized_mirror.
    The commands will wait for a safe quorum of nodes (quorum queues) or a synchronised master replica (classic mirrored queues)
    to be or come online within a period of time.

    # Exits with a non-zero exit code if there is not a quorum + 1 of nodes online for all
    # quorum queues within 120 seconds (default timeout)
    rabbitmq-upgrade await_online_quorum_plus_one
    # Will wait for a quorum + 1 of nodes to be online for all quorum queues for 0 seconds...
    
    # The timeout can be adjusted via the -t flag:
    rabbitmq-upgrade await_online_quorum_plus_one -t 60
    # Will wait for a quorum + 1 of nodes to be online for all quorum queues for 60 seconds...
    
    # There is an equivalent command for classic mirrored queues
    rabbitmq-upgrade await_online_synchronized_mirror

    GitHub issue: rabbitmq/rabbitmq-cli#409

  • New rabbitmq-diagnostics command: os_env

    GitHub issue: rabbitmq/rabbitmq-cli#412

Prometheus Plugin

Enhancements

Federation Plugin

Enhancements

  • Internal resources cleanup is now more selective on abnormal link termination. A new upstream parameter, resource-cleanup-mode,
    can be set to "never" used to prevent internal queues from being deleted by exchange federation links on termination.
    Use this when data safety is more important than protection from resource leaks. It then will be up to the operator to make
    sure such resources are periodically deleted or use a suitable TTL.

    GitHub issue: rabbitmq/rabbitmq-federation#105

  • SNI is now enabled by default for TLS-enabled connections.

    Contributed by Carl Hörberg (CloudAMQP).

    GitHub issue: rabbitmq/rabbitmq-erlang-client#132

Shovel Plugin

Bug Fixes

  • Shovels are now correctly removed even when deletion commands are executed against a different node
    (not the one on which the target Shovel has been created).

    GitHub issue: rabbitmq/rabbitmq-shovel#68

  • More negative AMQP 1.0 endpoint connection responses are handled.

    Contributed by Renaud @bougueil Mariana.

    GitHub issue: rabbitmq/rabbitmq-amqp1.0-client#48

  • Messages forwarded from an AMQP 0-9-1 source to an AMQP 1.0 destination now propagates more
    message properties.

    GitHub issue: rabbitmq/rabbitmq-shovel#70

  • Pre-3.7 delete-after Shovel property is now considered as well as the new src-delete-after property.

    GitHub issue: [rabbitmq/rabbitmq-...

Read more

RabbitMQ 3.7.26

04 May 15:27

Choose a tag to compare

RabbitMQ 3.7.26

RabbitMQ 3.7.26 is a maintenance release. It focuses on bug fixes and usability
improvements.

RabbitMQ 3.7.x series are out of general support and covered by the limited extended support policy.

Please consider upgrading to RabbitMQ 3.8.x.

Erlang/OTP Compatibility Notes

This release no longer supports Erlang/OTP 20.3.
Previously recent 3.7.x nodes could start on Erlang 20.3 and to some extent were tested on it despite
the Erlang 21.3+ requirements in release notes and documentation.

Starting with this release, 21.3+ is a hard requirement enforced in the code
to ensure forward compatibility with Erlang 23.

Make sure a supported Erlang version is used before upgrading.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 21.3.x and 22.x.

Compatibility Notes

Upgrading to Erlang 21.x or Later Versions

When upgrading to this release and upgrading Erlang to 21.x or later at the same time, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded before Erlang.

Upgrade Doc Guides and Change Log

See 3.7.0 release notes upgrade
and compatibility notes first if upgrading from an earlier release.

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.

Changes

Federation Plugin

Enhancements

  • "Command" operations such as binding propagation now use a separate channel for all links, preventing latency
    spikes for asynchronous operations (such as message publishing) (a head-of-line blocking problem).

    Contributed by Grigory Starinkin.

    GitHub issue: rabbitmq/rabbitmq-federation#97

Management Plugin

Bug Fixes

Shovel Plugin

Bug Fixes

Source code archives

Warning: The source code archive provided by GitHub only contains the source of the broker,
not the plugins or the client libraries. Please download the archive named rabbitmq-server-3.7.26.tar.xz.

RabbitMQ 3.7.25

09 Apr 10:46

Choose a tag to compare

RabbitMQ 3.7.25

RabbitMQ 3.7.25 is a maintenance release. It focuses on bug fixes and usability
improvements.

This is the last generally supported 3.7.x release.
RabbitMQ 3.7.x series are now covered by the limited extended support policy.

Please consider upgrading to RabbitMQ 3.8.x.

Erlang/OTP Compatibility Notes

This release no longer supports Erlang/OTP 20.3.
Previously recent 3.7.x nodes could start on Erlang 20.3 and to some extent tested on it despite
the Erlang 21.3+ requirements in release notes and documentation.

Starting with this release, 21.3+ is a hard requirement enforced in the code
to ensure forward compatibility with Erlang 23.

Make sure a supported Erlang version is used before upgrading.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 21.3.x and 22.x.

Compatibility Notes

Upgrading to Erlang 21.x or Later Versions

When upgrading to this release and upgrading Erlang to 21.x or later at the same time, extra care has to be taken.
Since CLI tools from RabbitMQ releases older than 3.7.7 will fail on Erlang 21 or later,
RabbitMQ must be upgraded before Erlang.

Upgrade Doc Guides and Change Log

See 3.7.0 release notes upgrade
and compatibility notes first if upgrading from an earlier release.

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.

Changes

Core Server

Enhancements

  • Erlang 20.3 and earlier version support has been completely removed after months of being documented as unsupported.
    This release, however, gains Erlang 23.0 forward compatibility.

    GitHub issue: rabbitmq/rabbitmq-server#2269

Management Plugin

Enhancements

  • More frequent garbage collection by stats DB cache processes in environments where HTTP API queries produced
    large data sets.

    GitHub issue: rabbitmq/rabbitmq-management#788

  • rabbitmqadmin binding deletion now defaults to the same property key value as binding creation.

    Contributed by Ivan Kaloyanov.

    GitHub issue: rabbitmq/rabbitmq-management#779

Bug Fixes

Federation Plugin

Enhancements

  • Internal resources cleanup is now more selective on abnormal link termination. A new upstream parameter, resource-cleanup-mode,
    can be set to "never" used to prevent internal queues from being deleted by exchange federation links on termination.
    Use this when data safety is more important than protection from resource leaks. It then will be up to the operator to make
    sure such resources are periodically deleted or use a suitable TTL.

    GitHub issue: rabbitmq/rabbitmq-federation#105

Shovel Management Plugin

Bug Fixes

  • Shovels are now correctly removed even when deletion commands are executed against a different node
    (not the one on which the target Shovel has been created).

    GitHub issue: rabbitmq/rabbitmq-shovel#68

Trust Store Plugin

Enhancements

Source code archives

Warning: The source code archive provided by GitHub only contains the source of the broker,
not the plugins or the client libraries. Please download the archive named rabbitmq-server-3.7.25.tar.xz.