Releases: rabbitmq/rabbitmq-server
RabbitMQ 3.8.6
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_compileand
hipe_compile = trueare 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
-
Removed HiPE pre-compilation support.
GitHub issue: rabbitmq/rabbitmq-server#2392
Bug Fixes
-
Definition import on node boot (via the built-in
load_definitionsconfiguration 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
- federation upstreams
- dynamic shovels
- exchanges of types provided by plugins such as rabbitmq-consistent-hash-exchange
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 therabbitmq-env.conffile,
while their prefixless counterparts worked as expected.GitHub issue: rabbitmq/rabbitmq-common#401
Enhancements
-
rabbitmq.confconfig parser now accepts lines that only consist of whitespace.GitHub issue: rabbitmq/rabbitmq-server#2393
CLI Tools
Deprecations
-
rabbitmqctl hipe_compileis now a no-op. HiPE support has been deprecated in Erlang 22
will be removed in Erlang 24.GitHub issue: rabbitmq/rabbitmq-cli#433
-
The use of the `` environment variable to configure the shared secret is now deprecated.
Use the local file option instead or, if the value absolutely must be provided on the command line,
the--erlang-cookie [value]switch.GitHub issue: rabbitmq/rabbitmq-cli#443
Bug Fixes
-
rabbitmqctl export_definitionsincorrectly serialised runtime parameter values.GitHub issue: rabbitmq/rabbitmq-cli#435
-
CTL_ERL_ARGSenvironment variable was unintentionally ignored starting with version3.8.4.GitHub issue: rabbitmq/rabbitmq-server#2394
-
[command] --helpandhelp [command]output had minor unintentional inconsistencies.GitHub issue: rabbitmq/rabbitmq-cli#437
Enhancements
-
rabbitmq-queues check_if_node_is_quorum_criticalandrabbitmq-queues check_if_node_is_mirror_sync_criticalchecks
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_criticalnow 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 statusnow includes the total amount of memory used by the node in its
regular output. It was previously only available when--formatter=jsonswitch was used.GitHub issue: rabbitmq/rabbitmq-cli#449
-
rabbitmq-diagnostics erlang_cookie_sourcesis 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_fileis 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 evalnow 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_hostnameis 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
#...
RabbitMQ 3.8.6-rc.1
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_compileand
hipe_compile = trueare 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
-
Removed HiPE pre-compilation support.
GitHub issue: rabbitmq/rabbitmq-server#2392
Bug Fixes
-
Definition import on node boot (via
load_definitionsconfiguration 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
- federation upstreams
- dynamic shovels
- exchanges of types provided by plugins such as rabbitmq-consistent-hash-exchange
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 therabbitmq-env.conffile,
while their prefixless counterparts worked as expected.GitHub issue: rabbitmq/rabbitmq-common#401
Enhancements
-
rabbitmq.confconfig parser now accepts lines that only consist of whitespace.GitHub issue: rabbitmq/rabbitmq-server#2393
CLI Tools
Deprecations
-
rabbitmqctl hipe_compileis now a no-op. HiPE support has been deprecated in Erlang 22
will be removed in Erlang 24.GitHub issue: rabbitmq/rabbitmq-cli#433
-
The use of the `` environment variable to configure the shared secret is now deprecated.
Use the local file option instead or, if the value absolutely must be provided on the command line,
the--erlang-cookie [value]switch.GitHub issue: rabbitmq/rabbitmq-cli#443
Bug Fixes
-
rabbitmqctl export_definitionsincorrectly serialised runtime parameter values.GitHub issue: rabbitmq/rabbitmq-cli#435
-
CTL_ERL_ARGSenvironment variable was unintentionally ignored starting with version3.8.4.GitHub issue: rabbitmq/rabbitmq-server#2394
-
[command] --helpandhelp [command]output had minor unintentional inconsistencies.GitHub issue: rabbitmq/rabbitmq-cli#437
Enhancements
-
rabbitmq-queues check_if_node_is_quorum_criticalandrabbitmq-queues check_if_node_is_mirror_sync_criticalchecks
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_criticalnow 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_sourcesis 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_fileis 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 evalnow 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_hostnameis 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
-
The plugin could send the
authorizationheader asnullin some cases before a successful login.Contributed by @furkhat.
GitHub issue: rabbitmq/rabbitmq-management#833
Enhancements
-
The UI now uses more human-friendly information units when displaying client network traffic rate values.
Contribute by @seadog007.
GitHub issue: [rabbitmq/rabbitmq-management#827](https://github.com/rabbitmq/rabbitmq-ma...
RabbitMQ 3.7.27
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
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
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
-
In
3.8.4,RABBITMQ_CONF_ENV_FILEvalue was ignored on Windows.GitHub issue: rabbitmq/rabbitmq-common#392
-
Message store shutdown now uses a much higher timeout (up to 10 minutes instead of 30 seconds).
In environments with large message backlogs this means that the chances of queue indices rebuilding
after node restart is now substantially lower.GitHub issue: rabbitmq/rabbitmq-server#2324
-
On Windows,
RABBITMQ_HOMElocations with brackets are supported again.Contributed by @twjs76.
GitHub issues: rabbitmq/rabbitmq-server#2371,
rabbitmq/rabbitmq-server#1756 -
RABBITMQ_LOG_BASEwas not respected in some installations.GitHub issue: rabbitmq/rabbitmq-server-release#131
-
Setting
RABBITMQ_QUORUM_DIRto a location outside of node's data directory for a new node resulted
in feature flags not being implicitly enabled on boot.GitHub issue: rabbitmq/rabbitmq-server#2317
-
net_ticktimeand other Erlang distribution settings set inrabbitmq.confwere ignored because
distribution was started too early on node boot.GitHub issue: rabbitmq/rabbitmq-server#2377
Enhancements
-
Raft data directory now can be configured using
ra.data_dirconfiguration key:ra.data_dir = /path/to/raft/data/directoryGitHub 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
-
CLI tools now take
NODENAMEinto account as well asRABBITMQ_NODENAME, just like the server does.GitHub issue: rabbitmq/rabbitmq-cli#421
-
rabbitmq-diagnostics observeris now compatible with Erlang 23.GitHub issue: zhongwencool/observer_cli#68
Deprecations
-
rabbitmq-diagnostics node_health_check(néerabbitmqctl 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
-
Definition import was not performed when
management.load_definitions = /path/to/definitions/file.json
was used, although it was for its newer counterpart,load_definitions = /path/to/definitions/file.json.GitHub issue: rabbitmq/rabbitmq-management#818
-
jQuery was upgraded to
3.5.1.GitHub issue: rabbitmq/rabbitmq-management#815
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
-
Client ID tracker operation timeout has been increased from default 5 seconds.
GitHub issue: rabbitmq/rabbitmq-mqtt#231
Web STOMP Plugin
Enhacenements
-
More graceful handling of incorrect or unparseable data.
GitHub issue: rabbitmq/rabbitmq-web-stomp#121
AWS Peer Discovery Plugin
Enhancements
-
AWS peer discovery backend can be specified as
aws:cluster_formation.peer_discovery_backend = awsas well as the module name, or plugin name (
rabbitmq_peer_discovery_aws):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_awsGitHub 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 = consulas well as the module name, or plugin name (
rabbitmq_peer_discovery_consul):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_consulGitHub issue: rabbitmq/rabbitmq-peer-discovery-consul#43
etcd Peer Discovery Plugin
Bug Fixes
-
Locking operation against
etcdv3 API failed with acase_clause.GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#30
Enhancements
-
etcd peer discovery backend can be specified as
etcd:cluster_formation.peer_discovery_backend = etcdas well as the module name, or plugin name (
rabbitmq_peer_discovery_etcd):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_etcdGitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#26
Kubernetes Peer Discovery Plugin
Enhancements
-
Kubernetes peer discovery backend can be specified as
k8sorkubernetes:cluster_formation.peer_discovery_backend = k8sas well as the module name, or plugin name (
rabbitmq_peer_discovery_k8s):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8sGitHub issue: rabbitmq/rabbitmq-peer-discovery-k8s#65
Web STOMP Plugin
###...
RabbitMQ 3.8.5-rc.2
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
-
In
3.8.4,RABBITMQ_CONF_ENV_FILEvalue was ignored on Windows.GitHub issue: rabbitmq/rabbitmq-common#392
-
Message store shutdown now uses a much higher timeout (up to 10 minutes instead of 30 seconds).
In environments with large message backlogs this means that the chances of queue indices rebuilding
after node restart is now substantially lower.GitHub issue: rabbitmq/rabbitmq-server#2324
-
On Windows,
RABBITMQ_HOMElocations with brackets are supported again.Contributed by @twjs76.
GitHub issues: rabbitmq/rabbitmq-server#2371,
rabbitmq/rabbitmq-server#1756 -
RABBITMQ_LOG_BASEwas not respected in some installations.GitHub issue: rabbitmq/rabbitmq-server-release#131
-
Setting
RABBITMQ_QUORUM_DIRto a location outside of node's data directory for a new node resulted
in feature flags not being implicitly enabled on boot.GitHub issue: rabbitmq/rabbitmq-server#2317
-
net_ticktimeand other Erlang distribution settings set inrabbitmq.confwere ignored because
distribution was started too early on node boot.GitHub issue: rabbitmq/rabbitmq-server#2377
Enhancements
-
Raft data directory now can be configured using
ra.data_dirconfiguration key:ra.data_dir = /path/to/raft/data/directoryGitHub 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
-
CLI tools now take
NODENAMEinto account as well asRABBITMQ_NODENAME, just like the server does.GitHub issue: rabbitmq/rabbitmq-cli#421
-
rabbitmq-diagnostics observeris now compatible with Erlang 23.GitHub issue: zhongwencool/observer_cli#68
Deprecations
-
rabbitmq-diagnostics node_health_check(néerabbitmqctl 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
-
Definition import was not performed when
management.load_definitions = /path/to/definitions/file.json
was used, although it was for its newer counterpart,load_definitions = /path/to/definitions/file.json.GitHub issue: rabbitmq/rabbitmq-management#818
-
jQuery was upgraded to
3.4.1.GitHub issue: rabbitmq/rabbitmq-management#815
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
-
Client ID tracker operation timeout has been increased from default 5 seconds.
GitHub issue: rabbitmq/rabbitmq-mqtt#231
Web STOMP Plugin
Enhacenements
-
More graceful handling of incorrect or unparseable data.
GitHub issue: rabbitmq/rabbitmq-web-stomp#121
AWS Peer Discovery Plugin
Enhancements
-
AWS peer discovery backend can be specified as
aws:cluster_formation.peer_discovery_backend = awsas well as the module name, or plugin name (
rabbitmq_peer_discovery_aws):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_awsGitHub 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 = consulas well as the module name, or plugin name (
rabbitmq_peer_discovery_consul):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_consulGitHub issue: rabbitmq/rabbitmq-peer-discovery-consul#43
etcd Peer Discovery Plugin
Bug Fixes
-
Locking operation against
etcdv3 API failed with acase_clause.GitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#30
Enhancements
-
etcd peer discovery backend can be specified as
etcd:cluster_formation.peer_discovery_backend = etcdas well as the module name, or plugin name (
rabbitmq_peer_discovery_etcd):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_etcdGitHub issue: rabbitmq/rabbitmq-peer-discovery-etcd#26
Kubernetes Peer Discovery Plugin
Enhancements
-
Kubernetes peer discovery backend can be specified as
k8sorkubernetes:cluster_formation.peer_discovery_backend = k8sas well as the module name, or plugin name (
rabbitmq_peer_discovery_k8s):cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8sGitHub issue: rabbitmq/rabbitmq-peer-discovery-k8s#65
Web...
RabbitMQ 3.8.4
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] statusUpgrade 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 from3.8.4to 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_cachewas 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.createdevent like it would
for classic queues.GitHub issue: rabbitmq/rabbitmq-server#2341
Enhancements
-
Reduced peak memory use of quorum queues that go idle (not under constant load).
GitHub issue: rabbitmq/rabbitmq-server#2272
-
Change default configuration values for quorum queues to improve publisher back pressure when under heavy load.
GitHub issue: rabbitmq/rabbitmq-server#2334
-
Definition import is now partially concurrent, improving CPU utilisation and reducing the amount of time
taken to import a large definition file.GitHub issue: rabbitmq/rabbitmq-server#2224
-
Improved configuration merging for cases when multiple files are used, e.g.
rabbitmq.confplus
advanced.configor even multiple.conffiles (the latter is an experimental feature).GitHub issue: rabbitmq/rabbitmq-server#2277
-
More peer discovery errors are retried.
GitHub issue: rabbitmq/rabbitmq-server#1627
-
Allow product name, version and MOTD to be overwritten via environment variables.
GitHub issue: rabbitmq/rabbitmq-server#2247
-
Improve display of product name and version.
GitHub issue: rabbitmq/rabbitmq-server#2326
-
Make RabbitMQ a regular Erlang/OTP application.
GitHub issue: rabbitmq/rabbitmq-server#2180
CLI Tools
Enhancements
-
New
rabbitmq-upgradecommands:await_online_quorum_plus_oneandawait_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-diagnosticscommand:os_envGitHub issue: rabbitmq/rabbitmq-cli#412
Prometheus Plugin
Enhancements
-
Compatibility with Erlang 23 memory allocator metric format.
GitHub issue: rabbitmq/rabbitmq-prometheus#42
-
Node color labeling in Grafana dashboards now works out of the box with one more common naming scheme.
GitHub issue: rabbitmq/rabbitmq-prometheus#33
Contributed by @Aakcht.
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 ...
RabbitMQ 3.8.4-rc.3
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 from3.8.4to 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_cachewas 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.createdevent like it would
for classic queues.GitHub issue: rabbitmq/rabbitmq-server#2341
Enhancements
-
Reduced peak memory use of quorum queues that go idle (not under constant load).
GitHub issue: rabbitmq/rabbitmq-server#2272
-
Change default configuration values for quorum queues to improve publisher back pressure when under heavy load.
GitHub issue: rabbitmq/rabbitmq-server#2334
-
Definition import is now partially concurrent, improving CPU utilisation and reducing the amount of time
taken to import a large definition file.GitHub issue: rabbitmq/rabbitmq-server#2224
-
Improved configuration merging for cases when multiple files are used, e.g.
rabbitmq.confplus
advanced.configor even multiple.conffiles (the latter is an experimental feature).GitHub issue: rabbitmq/rabbitmq-server#2277
-
More peer discovery errors are retried.
GitHub issue: rabbitmq/rabbitmq-server#1627
-
Allow product name, version and MOTD to be overwritten via environment variables.
GitHub issue: rabbitmq/rabbitmq-server#2247
-
Improve display of product name and version.
GitHub issue: rabbitmq/rabbitmq-server#2326
-
Make RabbitMQ a regular Erlang/OTP application.
GitHub issue: rabbitmq/rabbitmq-server#2180
CLI Tools
Enhancements
-
New
rabbitmq-upgradecommands:await_online_quorum_plus_oneandawait_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-diagnosticscommand:os_envGitHub issue: rabbitmq/rabbitmq-cli#412
Prometheus Plugin
Enhancements
-
Compatibility with Erlang 23 memory allocator metric format.
GitHub issue: rabbitmq/rabbitmq-prometheus#42
-
Node color labeling in Grafana dashboards now works out of the box with one more common naming scheme.
GitHub issue: rabbitmq/rabbitmq-prometheus#33
Contributed by @Aakcht.
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-afterShovel property is now considered as well as the newsrc-delete-afterproperty.GitHub issue: [rabbitmq/rabbitmq-...
RabbitMQ 3.7.26
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
-
rabbitmqadminfailed with an exception on Python 3 when-f pretty_jsonflag was used.GitHub issue: rabbitmq/rabbitmq-management#794
Shovel Plugin
Bug Fixes
-
AMQP 1.0 client used by Shovel now correctly encodes Erlang atoms.
GitHub issue: rabbitmq/rabbitmq-amqp1.0-client#45
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
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.3and earlier version support has been completely removed after months of being documented as unsupported.
This release, however, gains Erlang23.0forward 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
-
rabbitmqadminbinding deletion now defaults to the same property key value as binding creation.Contributed by Ivan Kaloyanov.
GitHub issue: rabbitmq/rabbitmq-management#779
Bug Fixes
-
rabbitmqadmin importmangled non-ASCII characters.GitHub issue: rabbitmq/rabbitmq-management#785
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
-
HTTPS certificate provider will not longer terminate if upstream service response contains
invalid JSON.GitHub issue: rabbitmq/rabbitmq-trust-store#73
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.