Open source RabbitMQ: core server and tier 1 (built-in) plugins
RabbitMQ 3.11.27
is a maintenance release in the 3.11.x
release series.
This release series goes out of community support on Dec 31, 2023.
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 and supports Erlang versions up to 25.3.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
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.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Avoids a rare exception that could stop TCP socket writes on a client connection.
Definition files that are virtual host-specific cannot be imported on boot. Such files will now be detected early and the import process will terminate after logging a more informative message.
Previous the import process would run into an obscure exception.
Avoids two Shovels being started after an upgrade from 3.11.25
or older versions.
Two Shovels running concurrently would still transfer messages but because they act as competing consumers (and publishers), this affected message ordering in the target queue.
Contributed by @gomoripeti (CloudAMQP).
DELETE /api/policies/{vhost}/{policy}
returned a 500 response instead of a 404 one
when target virtual host did not exist.
GitHub issue: #9983
None in this release.
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.11.27.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.12.10
is a maintenance release in the 3.12.x
release series.
Please refer to the upgrade section from the 3.12.0 release notes if upgrading from a version prior to 3.12.0.
This release requires Erlang 25 and supports Erlang versions up to 26.1.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
As of 3.12.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.
Users upgrading from 3.11.x (or older releases) on Erlang 25 to 3.12.x on Erlang 26 (both RabbitMQ and Erlang are upgraded at the same time) must consult the v3.12.0 release notes first.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Avoids two Shovels being started after an upgrade from 3.12.6
or older versions.
Two Shovels running concurrently would still transfer messages but because they act as competing consumers (and publishers), this affected message ordering in the target queue.
Contributed by @gomoripeti (CloudAMQP).
GitHub issue: #9965
None in this release.
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.12.10.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.11.26
is a maintenance release in the 3.11.x
release series.
This release series goes out of community support on Dec 31, 2023.
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 and supports Erlang versions up to 25.3.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
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.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
When a topic permission was deleted, an internal event of type permission.deleted
was emitted in some cases, instead of topic.permission.deleted
.
Investigated by @bedia.
GitHub issue: #9937
Correctly block publishing AMQP 1.0 connections when a resource alarm is in effect.
GitHub issue: #9955
Global counters for producers are now available in the dashboard.
Contributed by @johanrhodin (CloudAMQP)
GitHub issue: #9846
rabbitmq-diagnostics list_policies_that_match [queue name]
is a new command
that simplifies troubleshooting of policy conflicts.
GitHub issue: #9916
None in this release.
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.11.26.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.12.9
is a maintenance release in the 3.12.x
release series.
Please refer to the upgrade section from the 3.12.0 release notes if upgrading from a version prior to 3.12.0.
This release requires Erlang 25 and supports Erlang versions up to 26.1.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
As of 3.12.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.
Users upgrading from 3.11.x (or older releases) on Erlang 25 to 3.12.x on Erlang 26 (both RabbitMQ and Erlang are upgraded at the same time) must consult the v3.12.0 release notes first.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
When a topic permission was deleted, an internal event of type permission.deleted
was emitted in some cases, instead of topic.permission.deleted
.
Investigated by @bedia.
GitHub issue: #9937
Shovels on 3.12.8
nodes failed during a rolling cluster upgrade due to internal
identifier format changes.
Starting with this release, both old and new formats are supported for upgrade safety.
GitHub issue: #9894
Global counters for producers are now available in the dashboard.
Contributed by @johanrhodin (CloudAMQP)
GitHub issue: #9846
Avoids an unnecessary warning in the logs.
GitHub issue: #9885
rabbitmq-diagnostics list_policies_that_match [queue name]
is a new command
that simplifies troubleshooting of policy conflicts.
GitHub issue: #9916
Nodes that have OAuth 2 enabled now redirect the user to the original landing page (if any) after successful login with the IDP.
Contributed by @dukex.
GitHub issue: #9851
None in this release.
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.12.9.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.13.0-rc.2
is a candidate of a new feature release.
This release includes several new features and optimizations.
The user-facing areas that have seen the biggest improvements in this release are
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
RabbitMQ preview releases are distributed via GitHub.
Community Docker image is another installation option for previews. It is updated with a delay (usually a few days).
This release requires Erlang 26.0 or later.
Provisioning Latest Erlang Releases explains what package repositories and tools can be used to provision latest patch versions of Erlang 26.x.
See the Upgrading guide for documentation on upgrades and RabbitMQ change log for release notes of other releases.
Note that since 3.12.0 requires all feature flags to be enabled before upgrading, there is no upgrade path from from 3.11.24 (or a later patch release) straight to 3.13.0.
This release does not graduate any feature flags.
However, all users are highly encouraged to enable all feature flags before upgrading to this release from 3.12.x.
RabbitMQ 3.13.0 nodes can run alongside 3.12.x
nodes. 3.13.x
-specific features can only be made available when all nodes in the cluster
upgrade to 3.13.0 or a later 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.13.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).
This release includes a few potentially breaking changes&
Starting with this release, RabbitMQ requires Erlang 26.0 or later versions. Nodes will fail to start on older Erlang releases.
Client libraries that were compatible with RabbitMQ 3.12.x
will be compatible with 3.13.0
.
RabbitMQ Stream Protocol clients must be upgraded to use the stream filtering feature
introduced in this release.
Khepri has an important difference from Mnesia when it comes to schema modifications such as queue or stream declarations, or binding declarations. These changes won't be noticeable with many workloads but can affect some, in particular, certain integration tests.
Consider two scenarios, A and B.
There is only one client. The client performs the following steps:
In this scenario, there should be no observable difference in behavior. Client's expectations will be met.
There are two clients, One and Two, connected to nodes R1 and R3, and using the same virtual host. Node R2 has no client connections.
Client One performs the following steps:
In this scenario, on step three Mnesia would return when all cluster nodes have committed an update. Khepri, however, will return when a majority of nodes, including the node handling Client One's operations, have returned.
This may include nodes R1 and R2 but not node R3, meaning that message M published by Client Two connected to node R3 in the above example is not guaranteed not be routed.
Once all schema changes propagate to node R3, Client Two's subsequent publishes on node R3 will be guaranteed to be routed.
This trade-off of a Raft-based system that assume that a write accepted by a majority of nodes can be considered a succeess.
To satisfy Client Two's expectations in scenario B Khepri could beform consistent (involving a majority of replicas) queries of bindings when routing messages but that would have a significant impact on throughput of certain protocols (such as MQTT) and exchange/destination types (anything that resembles a topic exchange in AMQP 0-9-1).
GET /api/queues` HTTP API endpoint has dropped several rarely used metrics, resulting in 25% in traffic saving.
mqtt.subscription_ttl
(in milliseconds) configuration setting was replaced with mqtt.max_session_expiry_interval_seconds
(in seconds).
A 3.13 RabbitMQ node will fail to boot if the old configuration setting is set.
For example, if you set mqtt.subscription_ttl = 3600000
(1 hour) prior to 3.13, replace that setting with mqtt.max_session_expiry_interval_seconds = 3600
(1 hour) in 3.13.
An openSUSE Leap package will not be provided with this release of RabbitMQ.
This release requires Erlang 26 and there is an Erlang 26 package available from Erlang Factory
but the package depends on glibc
2.34, and all currently available openSUSE Leap releases
(up to 15.5) ship with 2.31 at most.
Team RabbitMQ would like to continue building a openSUSE Leap package when a Leap 15.5-compatible Erlang 26 package becomes publicly available.
Any questions about this release, upgrades or RabbitMQ in general are welcome in GitHub Discussions or on our community Discord.
Release notes are kept under rabbitmq-server/release-notes.
Khepri now can be used as an alternative schema data store in RabbitMQ, by enabling a feature flag:
rabbitmqctl enable_feature_flag khepri_db
In practical terms this means that it will be possible to swap Mnesia for a Raft-based data store that will predictably recover from network partitions and node failures, the same way quorum queues and streams already do. At the same time, this means that RabbitMQ clusters now must have a majority of nodes online at all times, or all client operations will be refused.
Like quorum queues and streams, Khepri uses RabbitMQ's Raft implementation under the hood. With Khepri enabled, all key modern features of RabbitMQ will use the same fundamental approach to recovery from failures, relying on a library that passes a Jepsen test suite.
Team RabbitMQ intends to make Khepri the default schema database starting with RabbitMQ 4.0.
GitHub issue: #7206
Messages are now internally stored using a new common heavily AMQP 1.0-influenced container format. This is a major step towards a protocol-agnostic core: a common format that encapsulates a sum of data types used by the protocols RabbitMQ supports, plus annotations for routng, dead-lettering state, and other purposes.
AMQP 1.0, AMQP 0-9-1, MQTT and STOMP have or will adopt this internal representation in upcoming releases. RabbitMQ Stream protocol already uses the AMQP 1.0 message container structure internally.
This common internal format will allow for more correct and potentially efficient multi-protocol support in RabbitMQ, and that most cross-protocol translation rough edges can be smoothened.
GitHub issue: #5077
Target quorum queue replica state is now continuously reconciled.
When the number of online replicas of a quorum queue goes below (or above) its target, new replicas will be automatically placed if enough cluster nodes are available. This is a more automatic version of how quorum queue replicas have originally been grown.
For automatic shrinking of queue replicas, the user must opt in.
Contributed by @SimonUnge (AWS).
GitHub issue: #8218
Reduced memory footprint, improved memory use predictability and throughput of classic queues (version 2, or CQv2). This particularly benefits classic queues with longer backlogs.
Classic queue v2 (CQv2) storage implementation is now the default. It is possible to switch
the default back to CQv1 using rabbitmq.conf
:
# uses CQv1 by default
classic_queue.default_version = 1
Individual queues can be declared by passing x-queue-version
argument and/or through a queue-version
policy.
GitHub issue: #8308
Non-mirrored classic queues: optimizations of storage for larger (greater than 4 kiB) messages.
A subsystem for marking features as deprecated.
GitHub issue: #7390
Plugins now can register custom queue types. This means that a plugin now can provide a custom queue type.
Contributed by @luos (Erlang Solutions).
This release includes all bug fixes shipped in the 3.12.x
series.
Feature flag discovery on a newly added node could discover an incomplete inventory of feature flags.
GitHub issue: #8477
Feature flag discovery operations will now be retried multiple times in case of network failures.
GitHub issue: #8491
The state of node maintenance status across the cluster is now replicated. It previously was accessible to all nodes but not replicated.
GitHub issue: #9005
New API endpoint, GET /api/stream/{vhost}/{name}/tracking
, can be used to track
publisher and consumer offsets in a stream.
GitHub issue: #9642
Several rarely used queue metrics were removed to reduce inter-node data transfers
and CPU burn during API response generation. The effects will be particularly pronounced
for the GET /api/queues
endpoint used without filtering or pagination, which can produce
enormously large responses.
A couple of relevant queue metrics or state fields were lifted to the top level.
This is a potentially breaking change.
Note that Prometheus is the recommended option for monitoring, not the management plugin's HTTP API.
Support for (consumer) stream filtering.
This allows consumers that are only interested in a subset of data in a stream to receive less data. Note that false positives are possible, so this feature should be accompanied by client library or application-level filtering.
GitHub issue: #8207
Support for MQTTv5 (with limitations).
Negative message acknowledgements are now propagated to MQTTv5 clients.
GitHub issue: #9034
Potential incompatibility: mqtt.subscription_ttl
configuration was replaced with
mqtt.max_session_expiry_interval_seconds
that targets MQTTv5.
GitHub issue: #8846
During AMQP 1.0 to AMQP 0-9-1 conversion, the Correlation ID message property is now stored as x-correlation-id
(instead of x-correlation
) for values longer than 255 bytes.
This is a potentially breaking change.
GitHub issue: #8680
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.13.0.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.12.8
is a maintenance release in the 3.12.x
release series.
Please refer to the upgrade section from the 3.12.0 release notes if upgrading from a version prior to 3.12.0.
This release requires Erlang 25 and supports Erlang versions up to 26.1.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
As of 3.12.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.
Users upgrading from 3.11.x (or older releases) on Erlang 25 to 3.12.x on Erlang 26 (both RabbitMQ and Erlang are upgraded at the same time) must consult the v3.12.0 release notes first.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Avoids a potential exception in the autoheal
partition handler.
Contributed by @Ayanda-D.
GitHub issue: #9818
raft.segment_max_entries
is now validated to prevent the value from overflowing its 16-bit segment file field.
Maximum supported value is now 65535
.
GitHub issue: #9733
Significantly faster Shovel startup in environments where there are many of them (one thousand or more).
GitHub issue: #9796
User-provided credentials are now obfuscated using an one-off key pair generated on node boot. This keeps sensitive client state information from being logged by the runtime exception logger.
GitHub issue: #9777
None in this release.
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.12.8.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.11.25
is a maintenance release in the 3.11.x
release series.
This release series goes out of community support on Dec 31, 2023.
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 and supports Erlang versions up to 25.3.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
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.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Avoids a potential exception in the autoheal
partition handler.
Contributed by @Ayanda-D.
GitHub issue: #9819
raft.segment_max_entries
is now validated to prevent the value from overflowing its 16-bit segment file field.
Maximum supported value is now ``65535.
GitHub issue: #9748
Significantly faster Shovel startup in environments where there are many of them (one thousand or more).
GitHub issue: #9800
User-provided credentials are now obfuscated using an one-off key pair generated on node boot. This keeps sensitive client state information from being logged by the runtime exception logger.
GitHub issue: #9778
None in this release.
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.11.25.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.13.0-rc.1
is a candidate of a new feature release.
This release includes several new features and optimizations.
The user-facing areas that have seen the biggest improvements in this release are
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
RabbitMQ preview releases are distributed via GitHub.
Community Docker image is another installation option for previews. It is updated with a delay (usually a few days).
This release requires Erlang 26.0 or later.
Provisioning Latest Erlang Releases explains what package repositories and tools can be used to provision latest patch versions of Erlang 26.x.
See the Upgrading guide for documentation on upgrades and RabbitMQ change log for release notes of other releases.
Note that since 3.12.0 requires all feature flags to be enabled before upgrading, there is no upgrade path from from 3.11.24 (or a later patch release) straight to 3.13.0.
This release does not graduate any feature flags.
However, all users are highly encouraged to enable all feature flags before upgrading to this release from 3.12.x.
RabbitMQ 3.13.0 nodes can run alongside 3.12.x
nodes. 3.13.x
-specific features can only be made available when all nodes in the cluster
upgrade to 3.13.0 or a later 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.13.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).
TBD
Starting with this release, RabbitMQ requires Erlang 26.0 or later versions. Nodes will fail to start on older Erlang releases.
Client libraries that were compatible with RabbitMQ 3.12.x
will be compatible with 3.13.0
.
RabbitMQ Stream Protocol clients must be upgraded to use the stream filtering feature
introduced in this release.
Any questions about this release, upgrades or RabbitMQ in general are welcome in GitHub Discussions or on our community Discord.
Release notes are kept under rabbitmq-server/release-notes.
Khepri now can be used as an alternative schema data store in RabbitMQ, by enabling a feature flag:
rabbitmqctl enable_feature_flag khepri_db
In practical terms this means that it will be possible to swap Mnesia for a Raft-based data store that will predictably recover from network partitions and node failures, the same way quorum queues and streams already do. At the same time, this means that RabbitMQ clusters now must have a majority of nodes online at all times, or all client operations will be refused.
Like quorum queues and streams, Khepri uses RabbitMQ's Raft implementation under the hood. With Khepri enabled, all key modern features of RabbitMQ will use the same fundamental approach to recovery from failures, relying on a library that passes a Jepsen test suite.
Team RabbitMQ intends to make Khepri the default schema database starting with RabbitMQ 4.0.
GitHub issue: #7206
Messages are now internally stored using a new common heavily AMQP 1.0-influenced container format. This is a major step towards a protocol-agnostic core: a common format that encapsulates a sum of data types used by the protocols RabbitMQ supports, plus annotations for routng, dead-lettering state, and other purposes.
AMQP 1.0, AMQP 0-9-1, MQTT and STOMP have or will adopt this internal representation in upcoming releases. RabbitMQ Stream protocol already uses the AMQP 1.0 message container structure internally.
This common internal format will allow for more correct and potentially efficient multi-protocol support in RabbitMQ, and that most cross-protocol translation rough edges can be smoothened.
GitHub issue: #5077
Target quorum queue replica state is now continuously reconciled.
When the number of online replicas of a quorum queue goes below (or above) its target, new replicas will be automatically placed if enough cluster nodes are available. This is a more automatic version of how quorum queue replicas have originally been grown.
For automatic shrinking of queue replicas, the user must opt in.
Contributed by @SimonUnge (AWS).
GitHub issue: #8218
Reduced memory footprint, improved memory use predictability and throughput of classic queues (version 2, or CQv2). This particularly benefits classic queues with longer backlogs.
Classic queue v2 (CQv2) storage implementation is now the default. It is possible to switch
the default back to CQv1 using rabbitmq.conf
:
# uses CQv1 by default
classic_queue.default_version = 1
Individual queues can be declared by passing x-queue-version
argument and/or through a queue-version
policy.
GitHub issue: #8308
Non-mirrored classic queues: optimizations of storage for larger (greater than 4 kiB) messages.
A subsystem for marking features as deprecated.
GitHub issue: #7390
Plugins now can register custom queue types. This means that a plugin now can provide a custom queue type.
Contributed by @luos (Erlang Solutions).
This release includes all bug fixes shipped in the 3.12.x
series.
Feature flag discovery on a newly added node could discover an incomplete inventory of feature flags.
GitHub issue: #8477
Feature flag discovery operations will now be retried multiple times in case of network failures.
GitHub issue: #8491
The state of node maintenance status across the cluster is now replicated. It previously was accessible to all nodes but not replicated.
GitHub issue: #9005
New API endpoint, GET /api/stream/{vhost}/{name}/tracking
, can be used to track
publisher and consumer offsets in a stream.
GitHub issue: #9642
Several rarely used queue metrics were removed to reduce inter-node data transfers
and CPU burn during API response generation. The effects will be particularly pronounced
for the GET /api/queues
endpoint used without filtering or pagination, which can produce
enormously large responses.
A couple of relevant queue metrics or state fields were lifted to the top level.
This is a potentially breaking change.
Note that Prometheus is the recommended option for monitoring, not the management plugin's HTTP API.
Support for (consumer) stream filtering.
This allows consumers that are only interested in a subset of data in a stream to receive less data. Note that false positives are possible, so this feature should be accompanied by client library or application-level filtering.
GitHub issue: #8207
Support for MQTTv5 (with limitations).
Negative message acknowledgements are now propagated to MQTTv5 clients.
GitHub issue: #9034
Potential incompatibility: mqtt.subscription_ttl
configuration setting is now deprecated in favor of
mqtt.max_session_expiry_interval_seconds
that targets MQTTv5.
GitHub issue: #8846
During AMQP 1.0 to AMQP 0-9-1 conversion, the Correlation ID message property is now stored as x-correlation-id
(instead of x-correlation
) for values longer than 255 bytes.
This is a potentially breaking change.
GitHub issue: #8680
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.13.0.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.12.7
is a maintenance release in the 3.12.x
release series.
Please refer to the upgrade section from the 3.12.0 release notes if upgrading from a version prior to 3.12.0.
This release requires Erlang 25 and supports Erlang versions up to 26.1.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
As of 3.12.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.
Users upgrading from 3.11.x (or older releases) on Erlang 25 to 3.12.x on Erlang 26 (both RabbitMQ and Erlang are upgraded at the same time) must consult the v3.12.0 release notes first.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Stream replication connections configured to use exclusively TLSv1.3 failed.
GitHub issue:#9678
On startup, stream replicas will handle one more potential case of segment file corruption after an unclean shutdown.
Contributed by @gomoripeti (CloudAMQP).
GitHub issue: #9678
default_policies.*.queue_pattern
definition in rabbitmq.conf
was incorrectly parsed.
Contributed by @SimonUnge (AWS).
GitHub issue: #9545
Avoid log noise when inter-node connections frequently fail and recover.
Contributed by @Ayanda-D.
GitHub issue: #9667
Optimized stream index scans. Longer scans could result in some replicas stopping with a timeout.
GitHub issue:#9678
Classic queue storage version is now a supported key for operator policies.
Contributed by @SignalWhisperer (AWS).
GitHub issue: #9548
Queue length limit overflow behavior now can be configured via operator policies.
Contributed by @SimonUnge (AWS).
GitHub issue: #9636
rabbitmq-streams list_stream_consumer_groups
incorrectly validated the set of columns it accepts.
GitHub issue: #9671
Several list_stream_*
commands (available via both rabbitmq-diagnostics
and rabbitmq-streams
) commands now can
display replica node in addition to other fields.
GitHub issue: #9582
rabbitmqctl add_user
now can accept a pre-generated salted password instead
of a plain text password, both as a positional argument and via standard input:
# This is just an example, DO NOT use this value in production!
# The 2nd argument is a Base64-encoded pre-hashed and salted value of "guest4"
rabbitmqctl -- add_user "guest4" "BMT6cj/MsI+4UOBtsPPQWpQfk7ViRLj4VqpMTxu54FU3qa1G" --pre-hashed-password
# try authenticating with a pair of credentials
rabbitmqctl authenticate_user "guest4" "guest4"
GitHub issue: #9669
Message consumption with the "Nack message, requeue: true" option did not actually requeue deliveries.
GitHub issue: #9715
HTTP API request body size is now limited to 10 MiB by default.
Two endpoints, one that accepts messages for publishing (note: publishing over the HTTP API is greatly discouraged)
and another for definition import,
will now reject larger transfers with a 400 Bad Request
response.
GitHub issue: #9708
DELETE /api/queues/{vhost}/{name}
now can delete exclusive queues.
GitHub issue: #8758
Key supported by operator policies are now grouped by queue type in the UI.
GitHub issue: #9544
Improved data safety for confirms in environments where the plugin uses classic queues.
GitHub issue: #9530
Avoid an exception when a not fully established MQTT-over-WebSockets connection terminated.
Contributed by @gomoripeti (CloudAMQP).
GitHub issue: #9654
Recovery of bindings of durable queues bound to a transient JMS topic exchange failed.
GitHub issue: #9533
Recovery of bindings of durable queues bound to a transient x-modulo-hash
exchange failed.
GitHub issue: #9533
Recovery of bindings of durable queues bound to a transient recent history exchange failed.
GitHub issue: #9533
osiris
has been upgraded to 1.6.9
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.12.7.tar.xz
instead of the source tarball produced by GitHub.
RabbitMQ 3.11.24
is a maintenance release in the 3.11.x
release series.
This release series goes out of community support on Dec 31, 2023.
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 and supports Erlang versions up to 25.3.x
.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.
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.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Stream replication connections configured to use exclusively TLSv1.3 failed.
GitHub issue:#9678
On startup, stream replicas will handle one more potential case of segment file corruption after an unclean shutdown.
Contributed by @gomoripeti (CloudAMQP).
GitHub issue: #9678
default_policies.*.queue_pattern
definition in rabbitmq.conf
was incorrectly parsed.
Contributed by @SimonUnge (AWS).
GitHub issue: #9546
Optimized stream index scans. Longer scans could result in some replicas stopping with a timeout.
GitHub issue:#9678
Classic queue storage version is now a supported key for operator policies.
Contributed by @SignalWhisperer (AWS).
GitHub issue: #9549
Nodes now log boot time at info level instead of debug. This piece of information can be useful during root cause analysis.
Contributed by @johanrhodin (CloudAMQP).
GitHub issue: #9466
HTTP API request body size is now limited to 10 MiB by default.
Two endpoints, one that accepts messages for publishing (note: publishing over the HTTP API is greatly discouraged)
and another for definition import,
will now reject larger transfers with a 400 Bad Request
response.
GitHub issue: #9708
DELETE /api/queues/{vhost}/{name}
now can delete exclusive queues.
GitHub issue: #8758
osiris
has been upgraded to 1.6.9
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.11.24.tar.xz
instead of the source tarball produced by GitHub.