Releases: rabbitmq/rabbitmq-server
RabbitMQ 3.12.0-beta.6
RabbitMQ 3.12.0-beta.6
RabbitMQ 3.12.0-beta.6
is a preview of a new feature release.
Highlights
This release includes several new features and optimizations and graduates (makes mandatory) a number of feature flags.
The user-facing areas that have seen the biggest improvements in this release are
- Significantly reduced MQTT and Web MQTT memory footprint per connection
- Reduced quorum queue memory footprint, improved throughput stability under load
- Classic queue message store memory efficiency and footprint predictability
- OAuth 2, OIDC, IDP support
This release also features many internal API improvements in preparation to 4.0
with Khepri.
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
Obtaining Packages
RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.
Erlang/OTP Compatibility Notes
This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
Upgrading to 3.12
Documentation guides on upgrades
See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.
Required Feature Flags
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Mixed version cluster compatibility
RabbitMQ 3.12.0 nodes can run alongside 3.11.x
nodes. 3.12.x
-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other patch release in the new series.
While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.12.0, these irregularities will go away.
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).
Compatibility Notes
More Feature Flags Gratuate to Core Features ("Always Enabled")
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Minimum Supported Erlang Version
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Client Library Compatibility
Client libraries that were compatible with RabbitMQ 3.11.x
will be compatible with 3.12.0
.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Release notes are kept under rabbitmq-server/release-notes.
Core Server
Enhancements
-
Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
on average, and in particular when Single Active Consumer is used.GitHub issue: #7553
-
Reduced memory footprint, improved memory use predictability and throughput of classic queues.
This particularly benefits classic queues with longer backlogs. -
Reduced peak memory footprint of quorum queues.
GitHub issue: #7175
-
Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
streams.GitHub issue: #6440
-
All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
all feature flags are enabled before upgrading to 3.12.0.GitHub issue: #7219
-
Plugin and core API: all schema data store operations are now available via the
rabbit_db_*
modules.
Plugin maintainers should switch to them for an easier transition to a future 4.0 release. -
Plugin and core API: node data directory now should be accessed using
rabbit:data_dir/0
.GitHub issue: #6462
-
Initial Erlang 26 compatibility
GitHub issues: #7443
-
There is now a way to pre-configure users and their permissions for newly created virtual hosts:
default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*
This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.
Contributed by @illotum (AWS).
GitHub issue: #7208.
-
Policies can now be defined to only apply to specific queue types.
For example, it is now possible to have two policies matching all queue names ('.*')
but one applicable only to one queue type, and the other only to different queue type,
without conflicts.For example, this policy will only apply to quorum queues and not streams or classic queues:
rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
-
It is now possible to limit the maximum number of virtual hosts that can be created
in the cluster.Contributed by @SimonUnge (AWS).
GitHub issue: #7777
-
Nodes with a lot of (non-mirrored) classic queues with v2 storage enabled
by default (usingclassic_queue.default_version = 2
) now boot faster.GitHub issue: #7676
-
Quorum queues: The
x-delivery-count
header will no longer be added to messages the first time they are delivered (x-delivery-count=0
)
as it has a potential performance impact on consumer deliveries.GitHub issue: #7732
Bug Fixes
This release includes all bug fixes shipped in the 3.11.x
series.
-
It is now possible to use at-most-once dead lettering with streams (dead letter
messages to a stream).GitHub issue: #7846
-
Superstream could fail
to elect a single active consumer (SAC) in certain consumer churn conditions.GitHub issue: #7743
-
Classic mirrored queues that had a length limit defined on them
handled the overflow of messages differently from the current elected leader,
eventually causing exceptions and replica restarts.GitHub issue: #7579
CLI Tools
Enhancements
-
rabbitmq-queues rebalance
now supports streams in addition to classic and quorum queues.GitHub issue: #6440
-
rabbitmq-streams restart_stream
is a new command that can be used to kick off
a new leader election for a stream. This is another option that can be used
to rebalance stream leaders across cluster nodes.GitHub issue: #6440
-
Classic queue metrics are now available via
rabbitmq-diagnostics observer
.GitHub issue: #3314
-
rabbitmqctl set_permissions_globally
is a new command that sets up user permissions in all existing virtual hosts.GitHub issue: [#1000](https://github.com/rabbitmq/ra...
RabbitMQ 3.12.0-beta.5
RabbitMQ 3.12.0-beta.5
RabbitMQ 3.12.0-beta.5
is a preview of a new feature release.
Highlights
This release includes several new features and optimizations and graduates (makes mandatory) a number of feature flags.
The user-facing areas that have seen the biggest improvements in this release are
- Significantly reduced MQTT and Web MQTT memory footprint per connection
- Reduced quorum queue memory footprint, improved throughput stability under load
- Classic queue message store memory efficiency and footprint predictability
- OAuth 2, OIDC, IDP support
This release also features many internal API improvements in preparation to 4.0
with Khepri.
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
Obtaining Packages
RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.
Erlang/OTP Compatibility Notes
This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
Upgrading to 3.12
Documentation guides on upgrades
See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.
Required Feature Flags
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Mixed version cluster compatibility
RabbitMQ 3.12.0 nodes can run alongside 3.11.x
nodes. 3.12.x
-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other patch release in the new series.
While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.12.0, these irregularities will go away.
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).
Compatibility Notes
More Feature Flags Gratuate to Core Features ("Always Enabled")
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Minimum Supported Erlang Version
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Client Library Compatibility
Client libraries that were compatible with RabbitMQ 3.11.x
will be compatible with 3.12.0
.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Release notes are kept under rabbitmq-server/release-notes.
Core Server
Enhancements
-
Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
on average, and in particular when Single Active Consumer is used.GitHub issue: #7553
-
Reduced memory footprint, improved memory use predictability and throughput of classic queues.
This particularly benefits classic queues with longer backlogs. -
Reduced peak memory footprint of quorum queues.
GitHub issue: #7175
-
Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
streams.GitHub issue: #6440
-
All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
all feature flags are enabled before upgrading to 3.12.0.GitHub issue: #7219
-
Plugin and core API: all schema data store operations are now available via the
rabbit_db_*
modules.
Plugin maintainers should switch to them for an easier transition to a future 4.0 release. -
Plugin and core API: node data directory now should be accessed using
rabbit:data_dir/0
.GitHub issue: #6462
-
Initial Erlang 26 compatibility
GitHub issues: #7443
-
There is now a way to pre-configure users and their permissions for newly created virtual hosts:
default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*
This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.
Contributed by @illotum (AWS).
GitHub issue: #7208.
-
Policies can now be defined to only apply to specific queue types.
For example, it is now possible to have two policies matching all queue names ('.*')
but one applicable only to one queue type, and the other only to different queue type,
without conflicts.For example, this policy will only apply to quorum queues and not streams or classic queues:
rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
-
It is now possible to limit the maximum number of virtual hosts that can be created
in the cluster.Contributed by @SimonUnge (AWS).
GitHub issue: #7777
-
Nodes with a lot of (non-mirrored) classic queues with v2 storage enabled
by default (usingclassic_queue.default_version = 2
) now boot faster.GitHub issue: #7676
-
Quorum queues: The
x-delivery-count
header will no longer be added to messages the first time they are delivered (x-delivery-count=0
)
as it has a potential performance impact on consumer deliveries.GitHub issue: #7732
Bug Fixes
This release includes all bug fixes shipped in the 3.11.x
series.
-
Classic mirrored queues that had a length limit defined on them
handled the overflow of messages differently from the current elected leader,
eventually causing exceptions and replica restarts.GitHub issue: #7579
CLI Tools
Enhancements
-
rabbitmq-queues rebalance
now supports streams in addition to classic and quorum queues.GitHub issue: #6440
-
rabbitmq-streams restart_stream
is a new command that can be used to kick off
a new leader election for a stream. This is another option that can be used
to rebalance stream leaders across cluster nodes.GitHub issue: #6440
-
Classic queue metrics are now available via
rabbitmq-diagnostics observer
.GitHub issue: #3314
-
rabbitmqctl set_permissions_globally
is a new command that sets up user permissions in all existing virtual hosts.GitHub issue: #1000
-
rabbitmq-diagnostics cluster_status
now lists how many CPU cores are available to individual nodes, plus a total.GitHub issue: #7135
MQTT Plugin
Enhancements
- Significant (up to more than 90% with some workloads) reduction in memory footprint of MQTT connections,
and a double digit % reduction in m...
RabbitMQ 3.11.13
RabbitMQ 3.11.13
is a maintenance release in the 3.11.x
release series.
Please refer to the upgrade section from v3.11.0 release notes
if upgrading from a version prior to 3.11.0.
This release requires Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
Minimum Supported Erlang Version
As of 3.11.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
-
3.11.12
introduced a regression that caused client connections to fail with an exception
when TCP or TLS listeners were bound to a particular interface.GitHub issue: #7788
Dependency Upgrades
None in this release.
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.11.13.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.11.12
RabbitMQ 3.11.12
is a maintenance release in the 3.11.x
release series.
Please refer to the upgrade section from v3.11.0 release notes
if upgrading from a version prior to 3.11.0.
This release requires Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
Minimum Supported Erlang Version
As of 3.11.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
-
Boot time import of definitions from a
conf.d
-style directory failed unless
definitions.skip_if_unchanged
was set totrue
, for example, like in this
rabbitmq.conf
:definitions.skip_if_unchanged = false definitions.import_backend = local_filesystem definitions.local.path = /path/to/RabbitMQ/definitions/conf.d/
GitHub issue: #7705
-
Improved resiliency of dead-lettering.
GitHib issue: #7677
Enhancements
-
When the maximum allowed number of connections to the node was limited using the
connection_max
key
and the limit was reached, newly connecting client previously would run into a TCP connection timeout.Now a more specific error will be returned to the client before connection closure.
Contributed by @SimonUnge (AWS).
GitHub issue: #7593
CLI Tools
Bug Fixes
-
rabbitmqctl add_vhosts
failed with an exception when--default-queue-type
option was provided.GitHub issue: #7750
Management Plugin
Bug Fixes
-
HTTP API endpoint
PUT /api/vhosts/{name}
incorrectly useddefaultqueuetype
for default queue type
key name. It is nowdefault_queue_type
, the same key as returned byGET /api/vhosts/{name}
.GitHub issue: #7734
-
HTTP API will now respond with a
405 Method Not Allowed
instead of a 500 when
an unsupported method is used by the client.Contributed by @gomoripeti (CloudAMQP).
GitHub issue: #7675
AMQP 1.0 Plugin
Bug Fixes
-
Fixed AMQP 1.0 authentication issue that affected OAuth 2 token users.
GitHub issue: #7758
Dependency Upgrades
None in this release.
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.11.12.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.12.0-beta.3
RabbitMQ 3.12.0-beta.3
RabbitMQ 3.12.0-beta.3
is a preview of a new feature release.
Highlights
This release includes several new features and optimizations and graduates (makes mandatory) a number of feature flags.
The user-facing areas that have seen the biggest improvements in this release are
- Significantly reduced MQTT and Web MQTT memory footprint per connection
- Reduced quorum queue memory footprint, improved throughput stability under load
- Classic queue message store memory efficiency and footprint predictability
- OAuth 2, OIDC, IDP support
This release also features many internal API improvements in preparation to 4.0
with Khepri.
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
Obtaining Packages
RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.
Erlang/OTP Compatibility Notes
This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
Upgrading to 3.12
Documentation guides on upgrades
See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.
Required Feature Flags
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Mixed version cluster compatibility
RabbitMQ 3.12.0 nodes can run alongside 3.11.x
nodes. 3.12.x
-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other patch release in the new series.
While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.12.0, these irregularities will go away.
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).
Compatibility Notes
More Feature Flags Gratuate to Core Features ("Always Enabled")
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Minimum Supported Erlang Version
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Client Library Compatibility
Client libraries that were compatible with RabbitMQ 3.11.x
will be compatible with 3.12.0
.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Release notes are kept under rabbitmq-server/release-notes.
Core Server
Enhancements
-
Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
on average, and in particular when Single Active Consumer is used.GitHub issue: #7553
-
Reduced memory footprint, improved memory use predictability and throughput of classic queues.
This particularly benefits classic queues with longer backlogs. -
Reduced peak memory footprint of quorum queues.
GitHub issue: #7175
-
Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
streams.GitHub issue: #6440
-
All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
all feature flags are enabled before upgrading to 3.12.0.GitHub issue: #7219
-
Plugin and core API: all schema data store operations are now available via the
rabbit_db_*
modules.
Plugin maintainers should switch to them for an easier transition to a future 4.0 release. -
Plugin and core API: node data directory now should be accessed using
rabbit:data_dir/0
.GitHub issue: #6462
-
Initial Erlang 26 compatibility
GitHub issues: #7443
-
There is now a way to pre-configure users and their permissions for newly created virtual hosts:
default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*
This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.
Contributed by @illotum (AWS).
GitHub issue: #7208.
-
Policies can now be defined to only apply to specific queue types.
For example, it is now possible to have two policies matching all queue names ('.*')
but one applicable only to one queue type, and the other only to different queue type,
without conflicts.For example, this policy will only apply to quorum queues and not streams or classic queues:
rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
-
Nodes with a lot of (non-mirrored) classic queues with v2 storage enabled
by default (usingclassic_queue.default_version = 2
) now boot faster.GitHub issue: #7676
-
Quorum queues: The
x-delivery-count
header will no longer be added to messages the first time they are delivered (x-delivery-count=0
)
as it has a potential performance impact on consumer deliveries.GitHub issue: #7732
Bug Fixes
This release includes all bug fixes shipped in the 3.11.x
series.
-
Classic mirrored queues that had a length limit defined on them
handled the overflow of messages differently from the current elected leader,
eventually causing exceptions and replica restarts.GitHub issue: #7579
CLI Tools
Enhancements
-
rabbitmq-queues rebalance
now supports streams in addition to classic and quorum queues.GitHub issue: #6440
-
rabbitmq-streams restart_stream
is a new command that can be used to kick off
a new leader election for a stream. This is another option that can be used
to rebalance stream leaders across cluster nodes.GitHub issue: #6440
-
Classic queue metrics are now available via
rabbitmq-diagnostics observer
.GitHub issue: #3314
-
rabbitmqctl set_permissions_globally
is a new command that sets up user permissions in all existing virtual hosts.GitHub issue: #1000
-
rabbitmq-diagnostics cluster_status
now lists how many CPU cores are available to individual nodes, plus a total.GitHub issue: #7135
MQTT Plugin
Enhancements
-
Significant (up to more than 90% with some workloads) reduction in memory footprint of MQTT connections,
and a double digit % reduction in memory footprint of MQTT-over-WebSockets (Web MQTT) connections.GitHub issues: #5895, #7091, [#7234](https://githu...
RabbitMQ 3.10.20
RabbitMQ 3.10.20
is a maintenance release in the 3.10.x
release series.
This series reaches the end of community support on July 31st, 2023.
Please refer to the upgrade section from v3.10.0 release notes
if upgrading from a version prior to 3.10.0.
This release requires Erlang 24.3 and supports Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
Minimum Supported Erlang Version
Erlang 23 and 24 versions older than 24.3 have reached end of support.
This release of RabbitMQ requires Erlang 24.3.4.8
or later versions. Nodes will fail to start on older Erlang releases.
Erlang 25.3 is recommended: it offers much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
-
Boot time import of definitions from a
conf.d
-style directory failed unless
definitions.skip_if_unchanged
was set totrue
, for example, like in this
rabbitmq.conf
:definitions.skip_if_unchanged = false definitions.import_backend = local_filesystem definitions.local.path = /path/to/RabbitMQ/definitions/conf.d/
GitHub issue: #7705
-
Improved resiliency of dead-lettering.
GitHib issue: #7677
CLI Tools
Bug Fixes
-
rabbitmq-streams help [command]
now looks up stream commands correctly.Contributed by @markus812498 (CloudAMQP).
GitHub issue: #7657
Management Plugin
Bug Fixes
-
HTTP API will now respond with a
405 Method Not Allowed
instead of a 500 when
an unsupported method is used by the client.Contributed by @gomoripeti (CloudAMQP).
GitHub issue: #7675
etcd Peer Discovery Plugin
Bug Fixes
-
Node key TTL setting was unintentionally ignored.
GitHub issues: #7554
Dependency Upgrades
None in this release.
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.10.20.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.11.11
RabbitMQ 3.11.11
is a maintenance release in the 3.11.x
release series.
Please refer to the upgrade section from v3.11.0 release notes
if upgrading from a version prior to 3.11.0.
This release requires Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
Minimum Supported Erlang Version
As of 3.11.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
-
Streams consumers that oscillate between being active and inactive, or just happen to be
temporarily become really slow, could become completely starved of deliveries. That is,
their message delivery rate could drop to 0 while other consumers did not have this problem.GitHub issue: #7638
-
Stream coordinator process memory footprint is now reported correctly (and classified differently).
Contributed by @gomoripeti (CloudAMQP).
GitHub issue: #7548
Enhancements
- There is now a way to pre-configure users and their permissions for newly created virtual hosts:
default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*
This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.
Contributed by @illotum (AWS).
GitHub issue: #7208.
STOMP Plugin
Enhancements
-
Consumers on
/queue/
destinations that consume from streams now can specify the
x-stream-max-segment-size-bytes
setting viaSUBSCRIBE
frame headers.GitHub issues: #7605
etcd Peer Discovery Plugin
Bug Fixes
-
Node key TTL setting was unintentionally ignored.
GitHub issues: #7554
Dependency Upgrades
None in this release.
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.11.11.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.12.0-beta.2
RabbitMQ 3.12.0-beta.2
RabbitMQ 3.12.0-beta.2
is a preview of a new feature release.
Highlights
This release includes several new features and optimizations and graduates (makes mandatory) a number of feature flags.
The user-facing areas that have seen the biggest improvements in this release are
- Lower MQTT and Web MQTT memory footprint per connection
- Reduced quorum queue memory footprint, improved throughput stability under load
- Classic queue message store memory efficiency and footprint predictability
- OAuth 2, OIDC, IDP support
This release also features many internal API improvements in preparation to 4.0
with Khepri.
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
Obtaining Packages
RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.
Erlang/OTP Compatibility Notes
This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
Upgrading to 3.12
Documentation guides on upgrades
See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.
Required Feature Flags
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Mixed version cluster compatibility
RabbitMQ 3.12.0 nodes can run alongside 3.11.x
nodes. 3.12.x
-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other patch release in the new series.
While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.12.0, these irregularities will go away.
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).
Compatibility Notes
More Feature Flags Gratuate to Core Features ("Always Enabled")
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Minimum Supported Erlang Version
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Client Library Compatibility
Client libraries that were compatible with RabbitMQ 3.11.x
will be compatible with 3.12.0
.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Release notes are kept under rabbitmq-server/release-notes.
Core Server
Bug Fixes
All bug fixes worth mentioning in this release have also shipped
in the 3.11.x
release series.
Enhancements
-
Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
on average, and in particular when Single Active Consumer is used.GitHub issue: #7553
-
Reduced memory footprint, improved memory use predictability and throughput of classic queues.
This particularly benefits classic queues with longer backlogs. -
Reduced peak memory footprint of quorum queues.
GitHub issue: #7175
-
Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
streams.GitHub issue: #6440
-
All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
all feature flags are enabled before upgrading to 3.12.0.GitHub issue: #7219
-
Plugin and core API: all schema data store operations are now available via the
rabbit_db_*
modules.
Plugin maintainers should switch to them for an easier transition to a future 4.0 release. -
Plugin and core API: node data directory now should be accessed using
rabbit:data_dir/0
.GitHub issue: #6462
-
Initial Erlang 26 compatibility
GitHub issues: #7443
-
There is now a way to pre-configure users and their permissions for newly created virtual hosts:
default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*
This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.
Contributed by @illotum (AWS).
GitHub issue: #7208.
-
Policies can now be defined to only apply to specific queue types.
For example, it is now possible to have two policies matching all queue names ('.*')
but one applicable only to one queue type, and the other only to different queue type,
without conflicts.For example, this policy will only apply to quorum queues and not streams or classic queues:
rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
CLI Tools
Features
-
rabbitmq-streams restart_stream
is a new command that can be used to kick off
a new leader election for a stream. This can be used to rebalance stream leaders
across cluster nodes.GitHub issue: #6440
-
Classic queue metrics are now available via
rabbitmq-diagnostics observer
.GitHub issue: #3314
-
rabbitmqctl set_permissions_globally
is a new command that sets up user permissions in all existing virtual hosts.GitHub issue: #1000
-
rabbitmq-diagnostics cluster_status
now lists how many CPU cores are available to individual nodes, plus a total.GitHub issue: #7135
MQTT Plugin
Enhancements
-
Significant (up to more than 90% with some workloads) reduction in memory footprint of MQTT connections,
and a double digit % reduction in memory footprint of MQTT-over-WebSockets (Web MQTT) connections.
Management Plugin
Enhancements
Consul Peer Discovery Plugin
Bug Fixes
-
Consul peer discovery now correctly determines if the node uses long or short names.
Contributed by @SimonUnge (AWS).
GitHub issue: #4230
Dependency Changes
ra
was upgraded to2.5.0
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.12.0.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.9.29
RabbitMQ 3.9.29
is a maintenance release in the 3.9.x
release series.
This series reached end of general support on Jan 31st, 2023.
Please refer to the Upgrading to 3.9 section from v3.9.0 release notes
if upgrading from a version prior to 3.9.0.
This release requires at least Erlang 24.3, and supports Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Minimum Supported Erlang Version
Erlang 23 support has reached its end of support.
Starting with this release, RabbitMQ requires Erlang 24.3 or later versions. Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
CLI Tools
Enhancements
- CLI tools will now report this version as no longer supported
inrabbitmq-diagnostics status
output.
LDAP Plugin
Bug Fixes
-
Due to a
$
sign escaping differences between Make and Bazel (the newly adopted build tool),
default value of ofuser_dn_pattern
setting was incorrect (had an extra$
).GitHub issue: #7161
Dependency Upgrades
None in this release.
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.9.29.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.12.0-beta.1
RabbitMQ 3.12.0-beta.1
RabbitMQ 3.12.0-beta.1
is a preview of a new feature release.
Highlights
This release includes several new features and optimizations and graduates (makes mandatory) a number of feature flags.
The user-facing areas that have seen the biggest improvements in this release are
- Significantly lower MQTT and Web MQTT memory footprint per connection
- Classic queue message store memory efficiency and footprint predictability
- OAuth 2, OIDC, IDP support
This release also features many internal API improvements in preparation to 4.0
with Khepri.
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
Obtaining Packages
RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.
Erlang/OTP Compatibility Notes
This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.
Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
Upgrading to 3.12
Documentation guides on upgrades
See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.
Required Feature Flags
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Mixed version cluster compatibility
RabbitMQ 3.12.0 nodes can run alongside 3.11.x
nodes. 3.12.x
-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other patch release in the new series.
While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.12.0, these irregularities will go away.
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).
Compatibility Notes
More Feature Flags Gratuate to Core Features ("Always Enabled")
RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.
If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.
Minimum Supported Erlang Version
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
Client Library Compatibility
Client libraries that were compatible with RabbitMQ 3.11.x
will be compatible with 3.12.0
.
Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.
Changes Worth Mentioning
Release notes are kept under rabbitmq-server/release-notes.
Core Server
Bug Fixes
All bug fixes worth mentioning in this release have also shipped
in the 3.11.x
release series.
Enhancements
-
Reduced memory footprint, improved memory use predictability and throughput of classic queues.
This particularly benefits classic queues with longer backlogs. -
Reduced peak memory footprint of quorum queues.
GitHub issue: #7175
-
Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
streams.GitHub issue: #6440
-
All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
all feature flags are enabled before upgrading to 3.12.0.GitHub issue: #7219
-
Plugin and core API: all schema data store operations are now available via the
rabbit_db_*
modules.
Plugin maintainers should switch to them for an easier transition to a future 4.0 release. -
Plugin and core API: node data directory now should be accessed using
rabbit:data_dir/0
.GitHub issue: #6462
-
Initial Erlang 26 compatibility
GitHub issues: #7443,
-
There is now a way to pre-configure user permissions for newly created virtual hosts.
Contributed by @illotum (AWS).
GitHub issue: #7208.
CLI Tools
Features
-
rabbitmq-streams restart_stream
is a new command that can be used to kick off
a new leader election for a stream. This can be used to rebalance stream leaders
across cluster nodes.GitHub issue: #6440
-
Classic queue metrics are now available via
rabbitmq-diagnostics observer
.GitHub issue: #3314
-
rabbitmqctl set_permissions_globally
is a new command that sets up user permissions in all existing virtual hosts.GitHub issue: #1000
-
rabbitmq-diagnostics cluster_status
now lists how many CPU cores are available to individual nodes, plus a total.GitHub issue: #7135
MQTT Plugin
Enhancements
-
Significant (up to more than 90% with some workloads) reduction in memory footprint of MQTT connections,
and a double digit % reduction in memory footprint of MQTT-over-WebSockets (Web MQTT) connections.
Management Plugin
Enhancements
Consul Peer Discovery Plugin
Bug Fixes
-
Consul peer discovery now correctly determines if the node uses long or short names.
Contributed by @SimonUnge (AWS).
GitHub issue: #4230
Dependency Changes
ra
was upgraded to2.4.9
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.12.0.tar.xz
instead of the source tarball produced by GitHub.