RabbitMQ Release Notes
13 release notes curated from 1 source by the Releasebot Team. Last updated: Jul 22, 2026
- Aug 26, 2026
- Date parsed from source:Aug 26, 2026
- First seen by Releasebot:Jul 22, 2026
- Modified by Releasebot:Aug 26, 2026
RabbitMQ 4.3.4
RabbitMQ 4.3.4 ships a maintenance release with important bug fixes across core server, stream, management, and federation features, plus security and validation improvements. It also tightens AMQP 1.0 parsing, improves management UI behavior, and updates the minimum supported Erlang version to 27.0.
RabbitMQ 4.3.4 is a maintenance release in the 4.3.x release series.
It is strongly recommended that you read 4.3.0 release notes in detail if upgrading from a version prior to 4.3.0.
Minimum Supported Erlang Version
The minimum supported Erlang version for this release series is 27.0.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
Quorum queues in clusters upgraded from 3.13.x to 4.2.x and then to 4.3.x could stop emitting metrics and taking snapshots after a node restart.
GitHub issues: #16974, #16990
The AMQP 1.0 parser now detects standard message body sections more strictly.
GitHub issue: #17017
The AMQP 1.0 parser now decodes certain array values more efficiently.
GitHub issue: #16994
Stream Plugin
Bug Fixes
The single active consumer coordinator did not notify a consumer that was re-selected for activation while it was still deactivating, leaving the group without an active consumer.
Contributed by @pterygota.
GitHub issues: #16975, #16976
Management Plugin
Bug Fixes
Very short lived exclusive queues could cause an exception during metric collection, producing log noise.
GitHub issues: #16989, #16999, #17002
After an IdP-initiated OAuth 2 login, the management UI now returns the user to the page that was open before the login instead of the default one.
Contributed by @thisisnsh.
GitHub issues: #16957, #16961
Several security fixes and validation gaps were addressed:
The HTTP API now returns 404 Not Found instead of 401 Unauthorized when a user lacks permission to a vhost, avoiding disclosure of the vhost's existence.
Token expiry values that use a floating point number are now accepted, not just integers.
To access all user-limits it is required administrator priviledge
To access a user-limits for a specific user now require the requester to be that same user or have administrator/monitoring privileges.
GitHub issue: #16709
Enhancements
The management UI Content Security Policy (CSP) no longer includes the unsafe-eval and unsafe-inline directives.
GitHub issue: #16916
Federation Plugin
Bug Fixes
In scenarios that involved a federated queue and a federated exchange with exactly the same name in the same virtual host, deleting an upstream unintentionally corrupted the federated exchange(s) operating state, breaking federation for the exchange in question.
GitHub issues: #16991, #16997
Dependency Changes
None in this release.
Original source - Aug 17, 2026
- Date parsed from source:Aug 17, 2026
- First seen by Releasebot:Aug 19, 2026
RabbitMQ 4.3.5
RabbitMQ ships 4.3.5 maintenance release with core server, management, stream, MQTT, STOMP, Shovel, Federation and Consistent Hash Exchange fixes and enhancements, plus stricter protocol handling, better logging and upgraded dependencies. Minimum Erlang is 27.0.
RabbitMQ 4.3.5 is a maintenance release in the 4.3.x release series.
It is strongly recommended that you read 4.3.0 release notes in detail if upgrading from a version prior to 4.3.0.
Minimum Supported Erlang Version
The minimum supported Erlang version for this release series is 27.0.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug FixesWith direct reply-to, a message routed to multiple targets that resolved to the same process could be delivered to it more than once.
GitHub issue: #17071
Quorum queue recovery from a recovery checkpoint could leave a part of the queue's internal state only partially initialized.
GitHub issue: #17012
In clusters that run a mix of 4.2.x and 4.3.x nodes during a rolling upgrade, local quorum queue queries now fall back to the previous state machine version instead of failing.
GitHub issue: #17128
A malformed AMQP 1.0 frame now results in a framing error returned to the client instead of an exception.
GitHub issue: #17101
The AMQP 1.0 message parser now validates message sections more strictly and decodes certain types of arrays more efficiently.
GitHub issue: #17049
Topic exchanges now limit the number of multi-segment (#) wildcards a binding key can use to two. The # wildcard is meant to be used as the final segment, that is, just once.
GitHub issue: #17039
When connection credentials are refreshed (for example, when an OAuth 2 token is renewed), the user's tags are now updated instead of being carried over from the original state.
GitHub issue: #17029
Definition import from an HTTPS endpoint no longer fails when a password-protected TLS (HTTPS) client certificate is used.
Contributed by @Pyolar.
GitHub issue: #16973
The AMQP 1.0 Erlang client no longer logs an exception when a link is already detached. Workloads that use short lived links could produce a substantial amount of log noise.
GitHub issue: #17124
EnhancementsAuthentication events are now logged under a new logging category, user.
Successful logins are logged at the info level, failed login attempts at the warning level.
GitHub issue: #16907
CLI Tools
Enhancementsrabbitmqctl hash_password now supports more password hashing functions.
GitHub issues: #14215, #17108
Stream Plugin
Bug FixesA stream protocol connection can have at most 256 publishers and 256 subscriptions, a limit that comes from the protocol's wire format. Attempts to go over these limits are now rejected early with a clear error instead of failing later with an unrelated one.
GitHub issue: #17123
EnhancementsBefore a stream client connection completes authentication and authorization (that is, before a successful open), the server now enforces a low frame_max ceiling instead of the full configured value. The default, 8192 bytes, is high enough to accommodate realistic JWT tokens used with SASL PLAIN authentication, and mirrors a mechanism already in place for AMQP 0-9-1 connections. It can be adjusted with the new stream.initial_frame_max setting.
GitHub issue: #17053
New setting: stream.max_uncompressed_sub_entry_batch_size. It bounds the declared uncompressed size of a published sub-entry batch, and defaults to 67108864 (64 MiB), the same default already used by the Java client's maxUncompressedSubEntryBatchSize. The broker and any client publishing to it should be configured with the same value.
GitHub issue: #17103
Management Plugin
Bug FixesHTTP API endpoints that accept a node name, including the federation and tracing related ones, now validate that the target node is a cluster member.
GitHub issues: #17106, #17118
The management UI no longer displays certain alert messages twice.
GitHub issue: #17127
EnhancementsWhen management.credential_encryption_secret is configured, the management UI login endpoint (POST /api/login) returns client credentials encrypted using AES-256-GCM with a key derived from the configured secret, and returns the ciphertext as an opaque token prefixed with rmqe.. The browser stores this token and presents it on all subsequent requests using the Authorization: Bearer rmqe.<token> header.
The secret MUST be identical on every node in the cluster.
Important: during a rolling cluster upgrade, enable this feature only after all nodes have been upgraded.
This is particularly important for clusters behind a load balancer: nodes that run older versions will not recognize the encrypted tokens and will reject the requests, unexpectedly logging users out.
GitHub issue: #16705
GET /api/definitions now supports conditional requests (ETag).
The ETag value is derived from the metadata store Raft index, so the tag will naturally change as the metadata store serves writes.
GitHub issues: #16724, #17121
The Referrer-Policy HTTP response header can now be configured with the management.headers.referrer_policy setting.
GitHub issue: #16893
When management.http.hide_allow_header is set to true, the Allow HTTP response header is omitted from all responses except 405 Method Not Allowed ones, where it is required by the HTTP specification. This avoids disclosing the supported HTTP methods to clients.
GitHub issue: #16893
When management.definitions.require_json_extension is set to true, both the management UI and the HTTP API will reject definition upload where the file does not have a .json extension. The setting defaults to false. Regardless of this setting, the server always validates that the uploaded content is valid JSON before importing it.
GitHub issue: #16946
OAuth 2 AuthN and AuthZ Backend Plugin
Bug FixesWhen RabbitMQ is behind a proxy that terminates TLS, the OAuth 2 login flow now honors the X-Forwarded-Proto, X-Forwarded-Host and X-Forwarded-Port headers when rewriting the token endpoint URL in the OpenID discovery payload.
GitHub issue: #17153
Shovel Plugin
Bug FixesReduced log noise.
GitHub issue: #17028
Static shovels that do not define any declarations failed to start.
GitHub issues: #17063, #17067
When a topology setup failure stops a shovel worker, the specific reason is now reported instead of a generic one.
GitHub issue: #17135
The Shovel HTTP API now processes shovel URIs the same way the federation plugin processes its upstream URIs.
GitHub issue: #17134
EnhancementsShovel TTL: dynamic shovels support a new setting, src-delete-after-duration, that instructs the shovel to self-delete after at least the specified duration.
Contributed by @michalovits.
GitHub issues: #17055, #17064
Federation Plugin
Bug FixesA malformed upstream URI could prevent a federation link from starting even when other, well-formed URIs were available. All candidate URIs are now tried.
Contributed by @sauravonwww.
GitHub issue: #17046
MQTT Plugin
Bug FixesPackets split across many network fragments are now parsed more efficiently.
GitHub issue: #17093
MQTT 5.0 properties are now parsed strictly: a property that is not valid for a given packet type is rejected.
GitHub issue: #17039
A Receive Maximum value of 0, prohibited by the MQTT 5.0 specification, is now rejected.
GitHub issue: #17035
STOMP Plugin
Bug FixesFrame size limits are now enforced earlier in the connection lifecycle.
GitHub issue: #17116
Web STOMP Plugin
Bug FixesThe accumulated frame size is now checked against max_frame_size after a connection has authenticated, matching the behavior of "regular" STOMP connections.
GitHub issue: #17065
Consistent Hash Exchange Plugin
Bug FixesAn edge case in bucket selection is now handled gracefully.
GitHub issue: #17081
Dependency Changes
cowboy was upgraded to 2.18.0
cowlib was upgraded to 2.19.0
gun was upgraded to 2.5.0
ra was upgraded to 3.1.10
ranch was upgraded to 2.2.1
Original source All of your release notes in one feed
Join Releasebot and get updates from RabbitMQ and hundreds of other software products.
- Jul 20, 2026
- Date parsed from source:Jul 20, 2026
- First seen by Releasebot:Jul 22, 2026
- Modified by Releasebot:Aug 26, 2026
RabbitMQ 4.2.9
RabbitMQ ships 4.2.9 maintenance release with important compatibility and reliability updates, including a new Erlang 27.0 minimum, safer queue and channel handling, stronger plugin behavior, and improvements across management, stream, MQTT, STOMP, LDAP, and discovery features.
RabbitMQ 4.2.9 is a maintenance release in the 4.2.x release series.
It is strongly recommended that you read 4.2.0 release notes in detail if upgrading from a version prior to 4.2.0.
Minimum Supported Erlang Version
Important: starting with this release, the minimum supported Erlang version is 27.0. Erlang/OTP 26 has reached end of life and is no longer supported.
GitHub issue: #16914
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
Classic queue index directory paths could accumulate slashes, eventually failing with an enametoolong file system error.
GitHub issue: #16833
AMQP 1.0 management operations that declare an exchange with an alternate exchange now verify the necessary permissions on the alternate exchange, matching AMQP 0-9-1.
GitHub issue: #16785
AMQP 1.0 management GET /bindings operations now behave consistently with the rest of the binding-related handlers.
GitHub issue: #16790
Worker pool processes no longer terminate when they receive an unexpected message.
Contributed by @Ayanda-D.
GitHub issue: #16666
A race condition between concurrent queue (or virtual host) deletion and a Ra cluster shutdown could log an exception.
Contributed by @Ayanda-D.
GitHub issue: #16880
A closing channel (connection) that failed to send channel.close_ok on an already terminated writer or socket no longer produce log noise.
Contributed by @Ayanda-D.
GitHub issue: #16651
Unexpected failures during channel termination cleanup no longer produce log noise.
Contributed by @Ayanda-D.
GitHub issue: #16740
Code paths that use rabbit_queue_type_util:erpc_call/5 now handle more errors.
Contributed by @Ayanda-D.
GitHub issue: #16701
Nodes could fail to start with a bad_generator exception in rabbit_queue_decorator:select/1 when a quorum queue record in the metadata store had its decorators set to undefined.
GitHub issues: #16843, #16844
Enabling tracing on multiple virtual hosts concurrently could silently drop some of the virtual hosts from the traced set. All virtual host tracing state modifications are now linearized.
GitHub issues: #16755, #16763
Enhancements
Password salts are now generated using a cryptographically secure pseudo-random number generator (CSPRNG).
GitHub issue: #16775
Socket-level metric collection used by several protocol readers and the management agent now handles concurrently closed connections safely.
Inspired by a contribution of @MugemaneBertin2001.
GitHub issues: #16856, #16832
CLI Tools
Bug Fixes
rabbitmq-plugins commands now tolerate plugins that are listed as enabled but are not installed.
GitHub issue: #16896
rabbitmq-plugins list no longer outputs an empty plugin table when the target node cannot be reached.
GitHub issue: #16791
rabbitmq-plugins commands now correctly handle file paths of remote nodes, validate remote nodes in offline mode, and no longer report false positives for rabbitmq-plugins is_enabled.
GitHub issue: #16842
Shell (Bash, zsh) command completion fixes.
Contributed by @Chr1s70ph.
GitHub issue: #16776
Enhancements
rabbitmq-queues and rabbitmq-streams now provide transfer_leadership commands for individual queues and streams.
GitHub issue: #16757
rabbitmq-upgrade drain safety improvements: the command now handles certain failures more gracefully.
Proposed by @MugemaneBertin2001.
GitHub issues: #16865, #3369
Stream Plugin
Bug Fixes
Permissions required for certain stream protocol operations were adjusted to be consistent with comparable operations over other protocols.
GitHub issue: #16754
Enhancements
The maximum number of super stream partitions is now limited to 1,000 partitions by default. This limit can be increased using the stream.max_super_stream_partitions key in rabbitmq.conf.
GitHub issues: #16689, #16706
A client RPC timeout is now logged as a concise message instead of an exception with a stack trace.
Contributed by @MugemaneBertin2001.
GitHub issues: #16829, #15744
Management Plugin
Bug Fixes
OAuth 2 login could fail in Safari. A new token endpoint proxy is now used for the affected authorization flow.
GitHub issues: #16664, #16892
Several management UI templates now use safe string escaping in more places.
GitHub issue: #16738, #16677
HTTP API message publishing endpoint now uses a timeout when waiting for publisher confirms.
GitHub issue: #16911
Enhancements
Definition export over the HTTP API is now significantly more efficient and transfers the result using HTTP response streaming.
GitHub issue: #16734
The Referrer-Policy HTTP response header is now set (and configurable).
GitHub issue: #16893
HTTP API error responses were refactored to be more consistent and expose fewer internal details.
GitHub issue: #16709
OAuth 2 AuthN and AuthZ Backend Plugin
Bug Fixes
Fractional exp (token expiry) timestamp values are now honored.
GitHub issue: #16713
Enhancements
The token refresh path is now more robust.
GitHub issue: #16858
Shovel Plugin
Bug Fixes
Several shovel bug fixes, including one for static shovel URIs whose credentials could be logged.
GitHub issues: #16855, #16835
A shovel deleted before it successfully connected (in the starting state) no longer leaks its status entry.
GitHub issue: #16767
Federation Plugin
Bug Fixes
Federation upstream URIs are now validated more strictly.
GitHub issue: #16942
MQTT Plugin
Enhancements
More correct peer host detection in setups that have Proxy Protocol enabled.
GitHub issue: #16933
Web MQTT Plugin
Enhancements
More correct peer host detection in setups that have Proxy Protocol enabled.
GitHub issue: #16933
The HSTS response header policy can now be configured for Web MQTT listeners.
GitHub issues: #14161, #16772
STOMP Plugin
Enhancements
Internal socket handling refactoring shared by STOMP and Web STOMP connections.
GitHub issue: #16935
Web STOMP Plugin
Enhancements
More correct peer host detection in setups that have Proxy Protocol enabled.
GitHub issue: #16935
The HSTS response header policy can now be configured for Web STOMP listeners.
GitHub issues: #14161, #16772
LDAP AuthN and AuthZ Backend Plugin
Bug Fixes
Additional DN escaping (RFC 4514) improvements
GitHub issue: #16712
JMS Topic Exchange Plugin
Enhancements
JMS selector evaluation now uses much smaller, safer limits.
GitHub issue: #16951
AWS Peer Discovery Plugin
Bug Fixes
Fixed a SigV4 request signing issue (SignatureDoesNotMatch) for body-less requests such as S3 GETs.
Contributed by @sdewhitt.
GitHub issue: #16759
Dependency Changes
cowboy was upgraded to 2.17.0
Original source - Jun 15, 2026
- Date parsed from source:Jun 15, 2026
- First seen by Releasebot:Jun 16, 2026
RabbitMQ 4.2.8
RabbitMQ releases 4.2.8 as a maintenance update with important bug fixes, faster startup, stronger management and CORS security, stream protocol optimizations, and broader support for encrypted configuration values across plugins.
RabbitMQ 4.2.8 is a maintenance release in the 4.2.x release series.
It is strongly recommended that you read 4.2.0 release notes in detail if upgrading from a version prior to 4.2.0.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
Users created without a password or a password hash (for example, those that rely on X.509 certificate-based authentication) over the HTTP API are now stored correctly, exactly like the users whose password was cleared with rabbitmqctl clear_password.
GitHub issues: #16629, #16633Consumer activity status of classic queue consumers was not always correctly updated and reported when single active consumer was enabled.
GitHub issues: #16532, #16450Default queue type (DQT) validation now treats empty strings the same as a missing value: by falling back to the default (classic queues).
GitHub issues: #16481, #16488Enhancements
The per-node channel limit (channel_max_per_node) is now also enforced for channels opened on direct Erlang client connections used by the Shovel and Federation plugins, matching the behavior enforced for "regular" AMQP 0-9-1 clients.
GitHub issues: #16616, #16618Modules are now loaded in parallel early on node boot, reducing node startup time.
GitHub issue: #16479Several new rabbitmq.conf keys now support encrypted values.
GitHub issue: #16632CLI Tools
Bug Fixes
rabbitmqctl add_vhost now validates the provided default queue type value.
GitHub issue: #16481Stream Plugin
Bug Fixes
Fixed a frame assembly performance regression in the stream protocol reader.
GitHub issue: #16588Enhancements
Several stream protocol reader optimizations: stream metadata queries now contact cluster nodes concurrently, subscription lookups use a more efficient data structure, and frame processing short-circuits when a connection reaches a terminal state.
GitHub issue: #16588Management Plugin
Bug Fixes
CORS hardening: access-control-request-headers values are now validated and a wildcard (*) origin header value is rejected.
GitHub issue: #16544Definitions import now limits the size of multipart upload bodies, and definitions export download filenames are restricted to a safe character set.
GitHub issue: #16544HTTP API 500 responses no longer include internal error details in the response body.
GitHub issue: #16544Several HTTP response headers are now consistently lowercase, and a previously missing content-type header was added to certain responses.
GitHub issue: #16544Enhancements
A one-time warning is now logged when the HSTS or CSP headers are disabled.
GitHub issue: #16544The timestamp of the oldest message in a stream is now displayed on the stream page.
GitHub issue: #15412Prometheus Plugin
Enhancements
More plugin configuration keys, such as prometheus.ssl.password, now support encrypted values in rabbitmq.conf.
GitHub issues: #16516, #16521MQTT Plugin
Bug Fixes
mqtt.tcp_listen_options.* settings in rabbitmq.conf did not take effect due to a configuration translation issue.
GitHub issue: #16529Dependency Changes
cuttlefish was upgraded to 3.9.1
cowboy was upgraded to 2.16.0
cowlib was upgraded to 2.17.0
gun was upgraded to 2.4.0
Original source - Jun 15, 2026
- Date parsed from source:Jun 15, 2026
- First seen by Releasebot:May 23, 2026
- Modified by Releasebot:Jun 16, 2026
RabbitMQ 4.3.2
RabbitMQ releases 4.3.2 as a maintenance update with important bug fixes, startup and stream performance improvements, stronger management API and CORS hardening, better configuration validation, and broader support for encrypted config values.
RabbitMQ 4.3.2 is a maintenance release in the 4.3.x release series.
It is strongly recommended that you read 4.3.0 release notes in detail if upgrading from a version prior to 4.3.0.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
Enabling the tie_binding_to_dest_with_keep_while_cond feature flag could fail in some rare cases.
GitHub issue: #16587
Users created without a password or a password hash (for example, those that rely on X.509 certificate-based authentication) over the HTTP API are now stored correctly, exactly like the users whose password was cleared with rabbitmqctl clear_password.
GitHub issues: #16629, #16633
Consumer activity status of classic queue consumers was not always correctly updated and reported when single active consumer was enabled.
GitHub issues: #16532, #16450
The values of the x-consumer-timeout and x-consumer-disconnected-timeout optional arguments are now validated at queue declaration time.
GitHub issue: #16557
Default queue type (DQT) validation now treats empty strings the same way as a missing value: by falling back to the default (classic queues).
GitHub issues: #16481, #16488
Feature flag operations now avoid unnecessary work: flags that are already enabled on all cluster nodes are excluded from synchronization, and enabling an empty set of flags is a no-op.
GitHub issue: #16497
Configuration changes for deprecated features are now honored when possible.
GitHub issue: #16500
Enhancements
The per-node channel limit (channel_max_per_node) is now also enforced for channels opened on direct Erlang client connections used by the Shovel and Federation plugins, matching the behavior enforced for "regular" AMQP 0-9-1 clients.
GitHub issues: #16616, #16618
Modules are now loaded in parallel early on node boot, reducing node startup time.
GitHub issue: #16479
Several new rabbitmq.conf keys now supports encrypted values.
GitHub issue: #16632
CLI Tools
Bug Fixes
rabbitmqctl set_topic_permissions now validates target user and exchange for existence.
GitHub issue: #16590
rabbitmqctl add_vhost now validates the provided default queue type value.
GitHub issue: #16481
Stream Plugin
Bug Fixes
Fixed a frame assembly performance regression in the stream protocol reader.
GitHub issue: #16588
Enhancements
Several stream protocol reader optimizations: stream metadata queries now contact cluster nodes concurrently, subscription lookups use a more efficient data structure, and frame processing short-circuits when a connection reaches a terminal state.
GitHub issue: #16588
Management Plugin
Bug Fixes
CORS hardening: access-control-request-headers values are now validated and a wildcard (*) origin header value is rejected.
GitHub issue: #16544
Definitions import now limits the size of multipart upload bodies, and definitions export download filenames are restricted to a safe character set.
GitHub issue: #16544
HTTP API 500 responses no longer include internal error details in the response body.
GitHub issue: #16544
Several HTTP response headers are now consistently lowercase, and a previously missing content-type header was added to certain responses.
GitHub issue: #16544
Enhancements
A one-time warning is now logged when the HSTS or CSP headers are disabled.
GitHub issue: #16544
The timestamp of the oldest message in a stream is now displayed on the stream page.
GitHub issue: #15412
The queue list page can now display a "Delayed" message count column, for example, for quorum queues that have a retry policy configured.
GitHub issue: #16639
Prometheus Plugin
Enhancements
More plugin configuration keys, such as prometheus.ssl.password, now support encrypted values in rabbitmq.conf.
GitHub issues: #16516, #16521
MQTT Plugin
Bug Fixes
mqtt.tcp_listen_options.* settings in rabbitmq.conf did not take effect due to a configuration translation issue.
GitHub issue: #16529
Dependency Changes
cuttlefish was upgraded to 3.9.1
cowboy was upgraded to 2.16.0
cowlib was upgraded to 2.17.0
gun was upgraded to 2.4.0
Original source Similar to RabbitMQ with recent updates:
- Grafana release notes48 release notes · Latest Aug 21, 2026
- Tailscale release notes126 release notes · Latest Aug 26, 2026
- Postgresql release notes30 release notes · Latest Aug 13, 2026
- Okta release notes113 release notes · Latest Sep 5, 2026
- Anthropic release notes801 release notes · Latest Sep 5, 2026
- Zed release notes166 release notes · Latest Sep 4, 2026
- May 20, 2026
- Date parsed from source:May 20, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.3.1
RabbitMQ 4.3.1 ships a maintenance update with key bug fixes and usability improvements across core server, queues, management, MQTT, Stream, federation, and auth plugins, plus new connection limits, renamed config keys, and TLS cipher suite settings for several components.
RabbitMQ 4.3.1 is a maintenance release in the 4.3.x release series.
It is strongly recommended that you read 4.3.0 release notes in detail if upgrading from a version prior to 4.3.0.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
If a queue was bound to a topic exchange using an empty binding key (""), messages published to any topic exchange with an empty routing key would be incorrectly routed to that queue.
To apply the fix, enable the new topic_binding_projection_v5 feature flag after upgrading all cluster nodes.
GitHub issue: #16271
A virtual host could be falsely considered to be deleted in certain metadata store error and timeout scenarios.
GitHub issue: #16422
Passive queue and exchange declarations are now allowed for users that have any permission on the virtual host (configure, write, or read), not only configure.
GitHub issues: #16272, #16085
Classic queue shared message store GC could fall behind other queue activity under heavy load
GitHub issues: #16142, #16141
Classic queue message store: garbage collection is now stopped cleanly during node shutdown.
GitHub issue: #15498
Quorum queues now gracefully handle negative priority values.
GitHub issue: #16280
Quorum queues: delayed retry-related policy keys are now accepted in policy definitions.
GitHub issues: #16395, #16398
Fixed a bug where quorum queue's at-least-once dead lettering could direct commands to the wrong member (replica).
GitHub issue: #16203
Quorum queues: reintroduced Raft WAL max entries default of 500K.
GitHub issue: #16382
A quorum queue could crash during recovery after an unclean shutdown
PR: rabbitmq/ra#629
Stream queue argument validation was improved.
GitHub issue: #16285
Enhancements
channel_max was renamed to max_channels in rabbitmq.conf. The original name is still supported as an alias.
GitHub issue: #16347
connection_max was renamed to max_connections in rabbitmq.conf. The original name is still supported as an alias.
GitHub issue: #16347
The per-node max_connections limit is now enforced for AMQP 1.0 connections as well as AMQP 0-9-1 ones.
GitHub issue: #16300
When a plain-text client connects to a TLS listener (or vice versa) for AMQP 0-9-1, MQTT, STOMP, and the Stream protocol, target node will log a more useful message.
GitHub issues: #16342, #16344
The permission cache is now traversed less often during AMQP 1.0 management and AMQP 0-9-1 channel checks.
GitHub issue: #16274
Stream Plugin
Bug Fixes
Stream protocol: an open frame with empty properties is now handled correctly.
GitHub issue: #16341
Enhancements
It is now possible to cap the maximum number of concurrent Stream Protocol client connections using the stream.max_connections configuration key in rabbitmq.conf.
GitHub issue: #16341
Management Plugin
Bug Fixes
HTTP API GET /api/connections could return a 500 response when STOMP connections were present.
GitHub issue: #16435
Enhancements
It is now possible to cap the maximum number of concurrent HTTP API connections using the management.tcp.max_connections, management.ssl.max_connections configuration keys in rabbitmq.conf.
GitHub issue: #16407
The peer (client) certificate serial number is now exposed in the management UI and select CLI commands.
GitHub issue: #16463
Prometheus Plugin
Enhancements
It is now possible to cap the maximum number of concurrent HTTP API connections using the prometheus.tcp.max_connections, prometheus.ssl.max_connections configuration keys in rabbitmq.conf.
GitHub issue: #16407
MQTT Plugin
Bug Fixes
The MQTT connection process no longer fails and logs an exception when keepalive checks encounter socket errors on an already-closed connection.
GitHub issue: #16391
Enhancements
It is now possible to cap the maximum number of concurrent MQTT client connections using the mqtt.max_connections configuration key in rabbitmq.conf.
GitHub issue: #16367
Federation Plugin
Bug Fixes
Federation links could fail to start during rolling cluster restarts.
GitHub issues: #16234, #16224
LDAP Plugin
Enhancements
New rabbitmq.conf configuration settings for TLS cipher suites: auth_ldap.ssl_options.ciphers.*.
GitHub issue: #16226
HTTP Auth Backend Plugin
Enhancements
New rabbitmq.conf configuration settings for TLS cipher suites: auth_http.ssl_options.ciphers.*.
GitHub issue: #16226
Auth Backend Cache Plugin
Bug Fixes
The cache was not effective for reconnecting clients.
GitHub issues: #16255, #16258
Trust Store Plugin
Bug Fixes
A user-provided fail_if_no_peer_cert value in the plugin's TLS options is now respected. Previously, an internal default could override the configured value.
GitHub issue: #16201
Enhancements
New rabbitmq.conf configuration settings for TLS cipher suites: trust_store.ssl_options.ciphers.*.
GitHub issue: #16226
Dependency Changes
ra was upgraded to 3.1.7
cuttlefish was upgraded to 3.7.0
cowboy was upgraded to 2.15.0
cowlib was upgraded to 2.16.1
gun was upgraded to 2.3.0
Original source - May 20, 2026
- Date parsed from source:May 20, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.2.7
RabbitMQ ships 4.2.7 as a maintenance release with bug fixes and configuration improvements across core server, Stream, Management, Prometheus, MQTT, Federation, LDAP, HTTP auth, auth cache, and trust store plugins, plus updated connection limits and TLS cipher suite settings.
RabbitMQ 4.2.7 is a maintenance release in the 4.2.x release series.
It is strongly recommended that you read 4.2.0 release notes in detail if upgrading from a version prior to 4.2.0.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
A virtual host could be falsely considered to be deleted in certain metadata store error and timeout scenarios.
GitHub issue: #16422
Passive queue and exchange declarations are now allowed for users that have any permission on the virtual host (configure, write, or read), not only configure.
GitHub issue: #16272
Classic queue message store: garbage collection is now stopped cleanly during node shutdown.
GitHub issue: #15498
Fixed a bug where quorum queue's at-least-once dead lettering could direct commands to the wrong member (replica).
GitHub issue: #16203
Stream queue argument validation was improved.
GitHub issue: #16285
Enhancements
channel_max was renamed to max_channels in rabbitmq.conf. The original name is still supported as an alias.
GitHub issue: #16347
connection_max was renamed to max_connections in rabbitmq.conf. The original name is still supported as an alias.
GitHub issue: #16347
The per-node max_connections limit is now enforced for AMQP 1.0 connections as well as AMQP 0-9-1 ones.
GitHub issue: #16300
The permission cache is now traversed less often during AMQP 1.0 management and AMQP 0-9-1 channel checks.
GitHub issue: #16274
Stream Plugin
Bug Fixes
Stream protocol: an open frame with empty properties is now handled correctly.
GitHub issue: #16341
Enhancements
It is now possible to cap the maximum number of concurrent Stream Protocol client connections using the stream.max_connections configuration key in rabbitmq.conf.
GitHub issue: #16341
Management Plugin
Bug Fixes
HTTP API GET /api/connections could return a 500 response when STOMP connections were present.
GitHub issue: #16435
Enhancements
It is now possible to cap the maximum number of concurrent HTTP API connections using the management.tcp.max_connections, management.ssl.max_connections configuration keys in rabbitmq.conf.
GitHub issue: #16407
The peer (client) certificate serial number is now exposed in the management UI and select CLI commands.
GitHub issue: #16463
Prometheus Plugin
Enhancements
It is now possible to cap the maximum number of concurrent HTTP API connections using the prometheus.tcp.max_connections, prometheus.ssl.max_connections configuration keys in rabbitmq.conf.
GitHub issue: #16407
MQTT Plugin
Bug Fixes
The MQTT connection process no longer fails and logs an exception when keepalive checks encounter socket errors on an already-closed connection.
GitHub issue: #16391
Enhancements
It is now possible to cap the maximum number of concurrent MQTT client connections using the mqtt.max_connections configuration key in rabbitmq.conf.
GitHub issue: #16367
Federation Plugin
Bug Fixes
Federation links could fail to start during rolling cluster restarts.
GitHub issues: #16234, #16224
LDAP Plugin
Enhancements
New rabbitmq.conf configuration settings for TLS cipher suites: auth_ldap.ssl_options.ciphers.*.
GitHub issue: #16226
HTTP Auth Backend Plugin
Enhancements
New rabbitmq.conf configuration settings for TLS cipher suites: auth_http.ssl_options.ciphers.*.
GitHub issue: #16226
Auth Backend Cache Plugin
Bug Fixes
The cache was not effective for reconnecting clients.
GitHub issues: #16255, #16258
Trust Store Plugin
Bug Fixes
A user-provided fail_if_no_peer_cert value in the plugin's TLS options is now respected. Previously, an internal default could override the configured value.
GitHub issue: #16201
Enhancements
New rabbitmq.conf configuration settings for TLS cipher suites: trust_store.ssl_options.ciphers.*.
GitHub issue: #16226
Dependency Changes
ra was upgraded to 2.17.3
cuttlefish was upgraded to 3.7.0
cowboy was upgraded to 2.15.0
cowlib was upgraded to 2.16.1
gun was upgraded to 2.3.0
Original source - May 12, 2026
- Date parsed from source:May 12, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.3.0
RabbitMQ releases 4.3.0 with major platform and quorum queue upgrades, making Khepri the only metadata store and removing Mnesia, classic CQv1 storage, and several deprecated defaults. It also adds delayed retry, consumer timeouts, priority queues, faster recovery, and broad plugin and API improvements.
RabbitMQ 4.3.0 is a new feature release.
Breaking Changes and Compatibility Notes
Mnesia and Parition Handling Strategies are Removed
Since only 4.2.x clusters can upgrade to 4.3.0 in place, this won't be a breaking change for nearly all instalations but it will affect community plugins that use Mnesia.
All partition handling-related keys in rabbitmq.conf will be accepted by 4.3.0 nodes but won't have any effect:
- cluster_partition_handling
- cluster_partition_handling.pause_if_all_down.recover
- cluster_partition_handling.pause_if_all_down.nodes.$name
Team RabbitMQ recommends removing the above keys from rabbitmq.conf before or shortly after upgrading.
Deprecated Features are Now Disabled by Default
A number of deprecated features are now disabled by default and require the user to opt-in in order to use them.
This includes non-durable (transient) non-exclusive queues: attempts to declare a queue with such property combination will be rejected by default.
Use durable queues, transient exclusive queues, or durable queues with a queue TTL instead.
To explicitly allow transient non-exclusive queues, make sure that all nodes in the cluster include the following rabbitmq.conf key and were restarted so that all nodes have a consistent view of the deprecated feature settings:
# Enables deprecated non-durable (transient) non-exclusive queues # (disabled by default as of RabbitMQ `4.3.0`, will be removed in a later version). # # Must be effective on all cluster nodes BEFORE # the cluster is upgraded to `4.3.0`. # If only some nodes have the setting configured, it will not have the desired effect. deprecated_features.permit.transient_nonexcl_queues = trueIf only some nodes have setting configured, it will not have the desired effect.
Classic Queues v1 Storage (CQv1) is Removed
This release removes the original classic queue storage implementation these days known as CQv1. A 2nd generation implementation called CQv2 has been adopted as the default starting with 4.2.0.
This means that attempts to declare a queue using the following optional queue arguments will fail:
- x-queue-mode set to any value
- x-queue-version set to 1
Existing classic queues upgraded to CQv2 during an earlier upgrade to 4.2.x will continue operating as usual.
Consumer Timeouts are No Longer Evaluated for Classic Queues and Streams
This release moves consumer timeout handling responsibility into the queues themselves. Also, all protocols (except for the stream protocol) now evaluate consumer timeout for queue types that support them. Classic queues and streams never evaluate consumer timeouts as their use cases largely avoid the need for such as feature.
Release Highlights
Khepri is Now The Only Metadata Store
As of this release, Khepri is the only metadata store supported by RabbitMQ: Mnesia was removed completely.
In practical operational terms, this means that
For a cluster to be available, a majority of nodes must be online at all times
Failure and partition recovery in a RabbitMQ cluster is now significantly simpler and uniform: all components that have replicated state (Khepri, quorum queues, streams) recover per Raft recovery semantics
Quorum Queues Enhancements
This release upgrades the Ra dependency to 3.x and introduces a new (8th) version of the quorum queue state machine with several new features and optimisations:
- Strict priority queues with per-priority message counts, correct redelivery ordering, and priority-aware message expiration
- Delayed retry for quorum queues: configurable increasing backoff when messages are returned
- Consumer timeout for quorum queues: configurable timeout for unacknowledged messages, with protocol-specific handling for AMQP 1.0 and MQTT
- Recovery snapshots and snapshot throttling to reduce recovery time and improve snapshotting decisions
- Memory optimisations including compact message references, optimised tuple storage for delayed keys, and removal of rabbit_fifo_index usage
Upgrading to 4.3.0
Documentation Guides on Upgrades
See the Upgrading guide for documentation on upgrades and GitHub releases for release notes of individual releases.
This release series supports upgrades from 4.2.x. Upgrades from earlier series are not supported: users must upgrade to the latest available 4.2.x patch release before upgrading to 4.3.0.
New Required Feature Flags
All feature flags introduced in 4.2.0 and earlier are required, including the following:
- rabbitmq_4.2.0
- rabbitmq_4.1.0
- rabbitmq_4.0.0
- khepri_db
- quorum_queue_non_voters
- message_containers_deaths_v2
Enable all required feature flags before upgrading to 4.3.0.
If your RabbitMQ cluster had plugin rabbitmq_amqp1_0 enabled in RabbitMQ 3.13.x (and your cluster still serves AMQP 1.0 client connections in 4.x), your cluster should do at least one rolling update after enabling feature flag rabbitmq_4.0.0 but before upgrading to 4.3.0.
Deprecated Features
In 4.3.0 the deprecation phase of the following features advanced from permitted_by_default to denied_by_default:
- amqp_address_v1
- amqp_filter_set_bug
- global_qos
- queue_master_locator
- transient_nonexcl_queues
And the deprecated feature ram_node_type has been removed.
Mixed Version Cluster Compatibility
RabbitMQ 4.3.0 nodes can run alongside 4.2.x in the same cluster.
Mixed version clusters are a mechanism that allows rolling upgrades and are not meant to be run for extended periods of time (no more than a few hours).
Recommended Post-upgrade Procedures
This version does not require any additional post-upgrade procedures compared to other versions.
Changes Worth Mentioning
Core Server
EnhancementsWhen a message is rejected by a queue, RabbitMQ now provides the queue name and rejection reason to AMQP 1.0 publishers in the Rejected outcome. This is particularly useful when multiple queues are bound to an exchange, as it allows publishers to identify which specific queue out of several target queues rejected the message and why (e.g., maximum queue length reached or queue unavailable). Previously, publishers had no way to determine which queue rejected their message or the reason for rejection.
The queue name and reason are included in the info field of the Rejected outcome's error field:
queue: <queue name> reason: maxlen | unavailableGitHub issue: #15075
Quorum queues now support strict priority queues with per-priority message counts, correct redelivery ordering across priorities, and priority-aware message expiration scans.
GitHub issue: #13885
Quorum queues now support delayed retry with configurable backoff based on delivery count. When messages are returned (via reject, nack, or modify), they can be held in a delayed state before becoming available again. The delay is based on delivery count: min(min_delay * delivery_count, max_delay).
Configuration is available via queue arguments (x-delayed-retry-type, x-delayed-retry-min, x-delayed-retry-max) or policy keys (delayed-retry-type, delayed-retry-min, delayed-retry-max). The retry type can be set to disabled, all, failed, or returned.
GitHub issue: #13885
Quorum queues now support a configurable consumer timeout. When a consumer holds unacknowledged messages beyond the timeout, the messages are returned to the queue. For AMQP 1.0 clients, timed-out deliveries are released via DISPOSITION(state=released) instead of detaching the link, allowing the consumer to recover without re-attaching. MQTT consumers are also supported.
The timeout can be set via the x-consumer-timeout consumer argument, queue argument, consumer-timeout policy key, or the global consumer_timeout setting in rabbitmq.conf.
GitHub issue: #13885
A new consumer_disconnected_timeout setting controls how long quorum queues wait before returning messages when a consumer's node becomes unreachable due to a network partition. The default is 60 seconds.
Configurable via consumer_disconnected_timeout in rabbitmq.conf, the consumer-disconnected-timeout policy key, or the x-consumer-disconnected-timeout queue argument.
GitHub issue: #13885
Quorum queue recovery snapshots reduce recovery time after a member restart by avoiding the need to replay all enqueue commands from the log.
GitHub issue: #13885
Quorum queue snapshot throttling now uses WAL fill ratio and reclaimable byte tracking to make smarter snapshotting decisions, yielding roughly one snapshot per queue per WAL cycle instead of excessive snapshots in shallow, fast-flowing queues.
GitHub issue: #13885
Quorum queue memory optimisations: message references now use a compact packed integer representation ("compact" means up to 59-bit) when possible, halving per-message memory overhead in many scenarios. The rabbit_fifo_index module is no longer used by the main state machine.
GitHub issue: #13885
Quorum queues now allow unlimited explicit message returns. The delivery limit is based on delivery-count rather than acquired-count, so messages can be explicitly returned to the queue without counting towards the delivery limit.
GitHub issue: #13885
The x-modulus-hash exchange type, previously provided by the sharding plugin, was moved into the core and reworked to provide stable message routing (distribution) assuming a stable set of bindings, including between node restarts.
GitHub issue: #15849
When quorum queue members (replicas) are deleted from a node, either manually via rabbitmq-queues shrink or as part of rabbitmqctl forget_cluster_node, the members are stopped in parallel.
GitHub issue: #15081
Purging a quorum queue now also removes at-least-once dead-lettered messages that were pending delivery.
GitHub issue: #13885
AMQP 0-9-1: when a connection's credentials are refreshed, the permissions cache is now cleared and consumer permissions are re-validated immediately
GitHub issue: #16092
Quorum queue delivery limit can now be changed via policy without queue redeclaration
GitHub issue: #16035
Khepri topic exchange routing projection (v4): replaced the internal representation with a trie backed by an ordered_set ETS table, significantly improving routing performance for topic exchanges with many bindings
GitHub issue: #15619
Quorum queues notify AMQP 1.0 clients of Single Active Consumer state changes
GitHub issue: #15736
More rabbitmq.conf keys now accept tagged values (e.g., encrypted:...)
GitHub issue: #15808
Startup banner no longer includes the Erlang cookie hash
GitHub issue: #16087
Optimised AMQP 1.0 message container annotation handling during modify outcomes
GitHub issue: #15743
Bulk queue delete with Khepri has been optimized
GitHub issue: #14902
Optimised quorum queue message expiry scanning
GitHub issue: #15846
AMQP 0-9-1: configure permission checks now apply to passive queue and exchange declarations, matching the behavior of their regular counterparts
GitHub issue: #16085
Khepri snapshot interval is now configurable in rabbitmq.conf
GitHub issue: #16011
Quorum queue Raft settings: additional configuration settings are now exposed in rabbitmq.conf, including maximum segment size
GitHub issue: #15962
Bug FixesIf a quorum queue with a large backlog terminated abnormally, node memory footprint could spike.
GitHub issue: #15837
rabbitmqctl forget_cluster_node now removes all quorum queue and stream members (replicas) before proceeding to leave the metadata store cluster. This order minimizes the risk of some replicas being left behind on the leaving node.
GitHub issue: #15729
Quorum queue at-most-once dead lettering for the overflow behaviour drop-head now happens in the correct order.
GitHub issue: #14926
Feature flag state in the registry and on disk were not consistent for a period of time during node boot.
GitHub issue: #14943
Classic queues now implement AMQP 1.0 delivery-count and first-acquirer headers properly.
GitHub issue: #15020
Quorum queues returned an incorrect consumer count in the response to a passive queue.declare operation
GitHub issue: #16185
Classic queue shared store could leave stale index entries after segment removal or rollover, causing unnecessary disk space usage
GitHub issue: #16142
Bindings targeting Direct Reply-to pseudo-queues are now rejected instead of being silently accepted without any functional effect
GitHub issue: #15935
AMQP 1.0 sessions could grant too many credits in certain failure and recovery scenarios
GitHub issue: #15883
Quorum queues: acquired-count is now correctly preserved when dead-lettering
GitHub issue: #16039
AMQP 1.0: attaching with a link handle already in use on the same session is now rejected with a handle-in-use session error, as required by the specification
GitHub issue: #16039
Quorum queues: Single Active Consumer could incorrectly report multiple active consumers in certain timing scenarios
GitHub issue: #15733
Quorum queues: consumer timeout could fail to trigger under certain conditions
GitHub issue: #15805
The channel limit exceeded error message now correctly identifies the per-user limit as the source of the constraint
GitHub issue: #15750
Stream Plugin
Bug Fixesstream.read_ahead is a new setting that controls how much data is prefetched from disk for stream reads (consumption).
GitHub issue: #14948
Stream deletion is now more resilient and can handle certain mid-deletion failure scenarios.
GitHub issue: #14852
new_stream coordinator command is now idempotent. Previously, concurrent or retried stream declarations could produce spurious errors even though the stream was created successfully
GitHub issue: #15706
Prometheus Plugin
Enhancements/metrics/detailed endpoint now supports filtering queue metrics by queue name
GitHub issue: #15689
Grafana Dashboards
EnhancementsThe dashboards were updated for the most recent RabbitMQ release series.
Replaced explicit rate intervals with $__rate_interval for better compatibility across different scrape intervals
GitHub issue: #15978
Management Plugin
EnhancementsGET /api/queues/{vhost} requests no longer perform unnecessary virtual host permission checks and log less (at debug level) as a result.
GitHub issue: #14923
Quorum queue delayed retry configuration and status, per-priority message counts, and consumer timeout state are now displayed in the management UI.
GitHub issue: #13885
GET /users/{user}/queues has been added.
GitHub issue: #15074
HTTP API displays static connection info (peer address, TLS details, auth mechanism) even when stats collection is disabled via rabbitmq.conf
GitHub issue: #16009
Bug Fixeseffective_policy_definition in HTTP API responses now returns an empty JSON object (not an array or empty string) when no policy applies to a queue
GitHub issue: #16017
Management UI: OAuth 2 used side by side with Basic Auth could fail to reload provider configuration correctly
GitHub issue: #15793
Management UI: preference cookie expiry now respects the configured session timeout setting rather than using a hardcoded value
GitHub issue: #15814
Management UI: users were presented with a 401 error after changing their own password via the UI. The session is now refreshed automatically
GitHub issue: #15730
The deprecated, unused GET /api/auth endpoint was removed.
It has been out of use since 3.11 but never removed.
GitHub issue: #16083
POST /api/users/bulk-delete now respects the protected_users configuration, matching the behavior of the single-user DELETE /api/users/:name endpoint
GitHub issue: #16143
MQTT Plugin
EnhancementsFor MQTT 5.0 publishers, when a message is rejected because the target queue's maximum length is exceeded, RabbitMQ now returns a Quota exceeded reason code in the PUBACK packet. This provides publishers with actionable information about why their message was rejected.
GitHub issue: #15075
MQTT QoS 0 queue type now reports member information in management API responses
GitHub issue: #15656
Web MQTT Plugin
EnhancementsA default max_frame_size is now set on WebSocket connections, bounding decompressed frame sizes. The limit starts at mqtt.max_packet_size_unauthenticated and is raised after successful CONNECT
GitHub issue: #16180
A login_timeout is now enforced for WebSocket connections, matching the TCP listener behavior
GitHub issue: #16120
WebSocket Origin header will be validated web_mqtt.allow_origins
GitHub issue: #16158
STOMP Plugin
EnhancementsFor certain destinations that previously used non-durable (transient) queues, STOMP subscriptions now use exclusive queues, as non-exclusive transient queues are a deprecated property combination disabled by default as of this release
GitHub issue: #13016
Web STOMP Plugin
EnhancementsWebSocket Origin header validation is now available via web_stomp.allow_origins
GitHub issue: #16158
Federation Plugin
EnhancementsFederation links and their connections are now stopped in parallel. This significantly improves shutdown time for nodes with many (into thousands) federation links.
GitHub issue: #15271
Federation links no longer restart during plugin or node shutdown. For nodes with hundreds or thousands of federation links, link recovery could significantly delay node shutdown.
GitHub issue: #15258
Federation Management Plugin
Bug FixesFederation link restart operations now require the policymaker tag
GitHub issue: #16051
Shovel Plugin
EnhancementsAn optional src-consumer-name property can be specified to define the consumer tag (amqp091 and local src-protocol) or link identifier (amqp10 protocol)
Bug FixesImproved target node resource alarm handling for AMQP 1.0 and local shovels.
GitHub issue: #14886
Local shovels could run into an exception that would cause a shovel restart.
GitHub issue: #14872
AMQP 1.0 shovels ignored the sasl URI parameter.
GitHub issue: #14867
Shovel Management Plugin
Bug FixesShovel management: DELETE operations now require the policymaker tag, matching the federation plugin counterpart
GitHub issue: #16051
OAuth 2 Plugin
Bug FixesA usability improvement allows the plugin to automatically load the trusted system x.509 (TLS) certificates.
GitHub issue: #14927
The auth cache backend now correctly delegates token expiry timestamps to the wrapped backend, ensuring connections are closed when tokens expire
GitHub issue: #16100
LDAP Plugin
EnhancementsLDAP queries, including multi-line ones, can now be specified in rabbitmq.conf.
GitHub issue: #14868
Bug FixesA usability improvement allows the plugin to automatically load the trusted system certificates when the user only enables TLS for the LDAP client but does not configure any other settings.
GitHub issue: #14937
DN values are now handled per RFC 4514
GitHub issue: #16101
HTTP Auth Backend Plugin
EnhancementsThe HTTP Auth Backend can now optionally provide a custom authorization denial reason to AMQP clients. To opt in, return deny <Reason> (instead of only deny) in the HTTP response body of your HTTP auth backend and set the following in your rabbitmq.conf file:
auth_http.authorization_failure_disclosure = trueSee the README for more information.
GitHub issue: #14641
Sharding Plugin
EnhancementsThe x-modulus-hash exchange type, previously provided by the sharding plugin, was moved into the core and reworked to provide stable message routing (distribution) assuming a stable set of bindings, including between node restarts.
GitHub issue: #15849
Trust Store Plugin
EnhancementsRefactored certificate identification to avoid (unlikely) conflicts
GitHub issue: #16116
The plugin now provides CLI commands for trust store certificate management have been introduced
GitHub issue: #15746
Rejected certificates are now logged with additional diagnostic details
GitHub issue: #15889
Tracing Plugin
Bug FixesTrace file downloads now set the charset to UTF-8 when serving trace files.
GitHub issue: #13952
Dependency Changes
- ra was upgraded to 3.1.6
- khepri was upgraded to 0.18.0
- osiris was upgraded to 1.3.1
- gen_batch_server was upgraded to 0.9.2
- cuttlefish was upgraded to 3.6.0
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-4.3.0.tar.xz instead of the source tarball produced by GitHub.
Original source - Apr 23, 2026
- Date parsed from source:Apr 23, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.2.6
RabbitMQ 4.2.6 ships a maintenance update with broad bug fixes and security hardening across core server, management, MQTT, Web MQTT, Web STOMP, shovel, federation, OAuth 2, LDAP, and trust store features, plus smaller enhancements and dependency updates.
RabbitMQ 4.2.6
RabbitMQ 4.2.6 is a maintenance release in the 4.2.x release series.
It is strongly recommended that you read 4.2.0 release notes in detail if upgrading from a version prior to 4.2.0.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
Quorum queues: get_checked_out aux command could return messages in incorrect order
GitHub issue: #16008
rabbitmqctl forget_cluster_node now removes all quorum queue and stream members (replicas) before proceeding to leave the metadata store cluster.
This order minimizes the risk of some replicas being left behind on the leaving node.
GitHub issue: #15729
The channel limit exceeded error message now correctly identifies the per-user limit as the reason
GitHub issue: #15750
AMQP 0-9-1: configure permission checks now apply to passive queue and exchange declarations, matching the behavior of their regular counterparts
Khepri: missing keys are now correctly distinguished from errors in certain internal operations, avoiding spurious error-level log messages
GitHub issue: #15942
Bindings targeting Direct Reply-to pseudo-queues are now rejected instead of being silently accepted without any functional effect
GitHub issue: #15935
Enhancements
More rabbitmq.conf keys now accept tagged values (e.g., encrypted:...)
GitHub issue: #15808
When quorum queue members (replicas) are deleted from a node, either manually via rabbitmq-queues shrink or as part of rabbitmqctl forget_cluster_node, the members are stopped in parallel
GitHub issue: #15081
AMQP 0-9-1: configure permission checks now apply to passive queue and exchange declarations, matching the behavior of their regular counterparts
GitHub issue: #16085
AMQP 0-9-1: when a connection's credentials are refreshed, the permissions cache is now cleared and consumer permissions are re-validated immediately
GitHub issue: #16092
Management Plugin
Bug Fixes
effective_policy_definition in HTTP API responses now returns an empty JSON object (not an array or empty string) when no policy applies to a queue
GitHub issue: #16017
Management UI: OAuth 2 combined with basic_auth could fail to reload provider configuration correctly
GitHub issue: #15858
Management UI: preference cookie expiry now respects the configured session timeout setting rather than using a hardcoded value
GitHub issue: #15814
Management UI: users were presented with a 401 error after changing their own password via the UI. The session is now refreshed automatically
GitHub issue: #15730
The deprecated, unused GET /api/auth endpoint was removed
It has been out of use since 3.11 but never removed.
GitHub issue: #16083
POST /api/users/bulk-delete now respects the protected_users configuration, matching the behavior of the single-user DELETE /api/users/:name endpoint
GitHub issue: #16143
Quorum queue status and stream tracking endpoints now enforce virtual host access checks, consistent with all other vhost-scoped endpoints
GitHub issue: #16104
Enhancements
HTTP API displays static connection info (peer address, TLS details, auth mechanism) even when stats collection is disabled via rabbitmq.conf
GitHub issue: #16009
Super stream creation via HTTP API now verifies configure permission, matching the stream protocol code path
GitHub issue: #16099
Management API regex filters (?name=...&use_regex=true) now enforce match limits, preventing pathological patterns from consuming excessive CPU time
GitHub issue: #16074
MQTT Plugin
Bug Fixes
Fixed a timing-sensitive issue around Last Will message delivery and session expiration
GitHub issue: #15999
Enhancements
MQTT QoS 0 queue type now reports member information in management API responses
GitHub issue: #15656
Web MQTT Plugin
Enhancements
A default max_frame_size is now set on WebSocket connections, bounding decompressed frame sizes. The limit starts at mqtt.max_packet_size_unauthenticated and is raised after successful CONNECT
GitHub issue: #16180
A login_timeout is now enforced for WebSocket connections, matching the TCP listener behavior
GitHub issue: #16120
WebSocket Origin header validation is now available via web_mqtt.allow_origins
GitHub issue: #16158
Web STOMP Plugin
Enhancements
A default max_frame_size is now set on WebSocket connections. A smaller pre-authentication limit is raised after successful STOMP CONNECT, matching the Web MQTT pattern
GitHub issue: #16180
A login_timeout is now enforced for WebSocket connections, matching the TCP listener behavior
GitHub issue: #16120
WebSocket Origin header validation is now available via web_stomp.allow_origins
GitHub issue: #16158
Shovel Plugin
Bug Fixes
AMQP 1.0 shovels now properly detach links when closing connections, preventing spurious error log entries during shutdown
GitHub issue: #15603
AMQP 1.0 shovel status no longer includes full connection URIs in API responses and CLI output
GitHub issue: #16108
Shovel Management Plugin
Bug Fixes
DELETE operations now require the policymaker tag, matching the federation plugin counterpart
GitHub issue: #16051
Federation Management Plugin
Bug Fixes
Federation link restart operations now require the policymaker tag
GitHub issue: #16051
OAuth 2 Plugin
Bug Fixes
The auth cache backend now correctly delegates token expiry timestamps to the wrapped backend, ensuring connections are closed when tokens expire
GitHub issue: #16100
OAuth 2 management UI: improved provider configuration loading and rendering
GitHub issue: #15858
LDAP Plugin
Bug Fixes
DN values are now handled per RFC 4514
GitHub issue: #16101
Trust Store Plugin
Enhancements
Refactored certificate identification to avoid (unlikely) conflicts
GitHub issue: #16116
Proper CLI commands for trust store certificate management have been introduced
GitHub issue: #15746
Rejected certificates are now logged with additional diagnostic details
GitHub issue: #15889
Consistent Hashing Exchange Plugin
Bug Fixes
Binding weights above 10,000 are now rejected. Previously, extremely large weights could cause excessive memory allocation
GitHub issue: #16118
Dependency Changes
khepri was upgraded to 0.17.7
gen_batch_server was upgraded to 0.9.1
Original source - Apr 21, 2026
- Date parsed from source:Apr 21, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.3.0-rc.1
RabbitMQ ships 4.3.0-rc.1, a feature-rich release candidate that makes Khepri the only metadata store, removes Mnesia and CQv1, and adds major quorum queue, stream, management, MQTT, Web MQTT, federation, shovel, auth, and trust store improvements.
RabbitMQ 4.3.0-rc.1
RabbitMQ 4.3.0-rc.1 is a new feature release candidate.
Breaking Changes and Compatibility Notes
Mnesia and Parition Handling Strategies are Removed
Since only 4.2.x clusters can upgrade to 4.3.0 in place, this won't be a breaking change for nearly all instalations but it will affect community plugins that use Mnesia.
All partition handling-related keys in rabbitmq.conf will be accepted by 4.3.0 nodes but won't have any effect:
- cluster_partition_handling
- cluster_partition_handling.pause_if_all_down.recover
- cluster_partition_handling.pause_if_all_down.nodes.$name
Team RabbitMQ recommends removing the above keys from rabbitmq.conf before or shortly after upgrading.
Deprecated Features are Now Disabled by Default
A number of deprecated features are now disabled by default and require the user to opt-in in order to use them.
This includes non-durable (transient) non-exclusive queues: attempts to declare a queue with such property combination will be rejected by default.
Use durable queues or transient exclusive queues instead.
Classic Queues v1 Storage (CQv1) is Removed
This release removes the original classic queue storage implementation these days known as CQv1. A 2nd generation implementation called CQv2 has been adopted as the default starting with 4.2.0.
This means that attempts to declare a queue using the following optional queue arguments will fail:
- x-queue-mode set to any value
- x-queue-version set to 1
Existing classic queues upgraded to CQv2 during an earlier upgrade to 4.2.x will continue operating as usual.
Consumer Timeouts are No Longer Evaluated for Classic Queues and Streams
This release moves consumer timeout handling responsibility into the queues themselves. Also, all protocols (except for the stream protocol) now evaluate consumer timeout for queue types that support them. Classic queues and streams never evaluate consumer timeouts as their use cases largely avoid the need for such as feature.
Release Highlights
Khepri is Now The Only Metadata Store
As of this release, Khepri is the only metadata store supported by RabbitMQ: Mnesia was removed completely.
In practical operational terms, this means that
- For a cluster to be available, a majority of nodes must be online at all times
- Failure and partition recovery in a RabbitMQ cluster is now significantly simpler and uniform: all components that have replicated state (Khepri, quorum queues, streams) recover per Raft recovery semantics
Quorum Queues Enhancements
This release upgrades the Ra dependency to 3.x and introduces a new (8th) version of the quorum queue state machine with several new features and optimisations:
- Strict priority queues with per-priority message counts, correct redelivery ordering, and priority-aware message expiration
- Delayed retry for quorum queues: configurable increasing backoff when messages are returned
- Consumer timeout for quorum queues: configurable timeout for unacknowledged messages, with protocol-specific handling for AMQP 1.0 and MQTT
- Recovery snapshots and snapshot throttling to reduce recovery time and improve snapshotting decisions
- Memory optimisations including compact message references, optimised tuple storage for delayed keys, and removal of rabbit_fifo_index usage
Upgrading to 4.3.0
Documentation Guides on Upgrades
See the Upgrading guide for documentation on upgrades and GitHub releases for release notes of individual releases.
This release series supports upgrades from 4.2.x. Upgrades from earlier series are not supported: users must upgrade to the latest available 4.2.x patch release before upgrading to 4.3.0.
New Required Feature Flags
All feature flags introduced in 4.2.0 and earlier are required, including the following:
- rabbitmq_4.2.0
- rabbitmq_4.1.0
- rabbitmq_4.0.0
- khepri_db
- quorum_queue_non_voters
- message_containers_deaths_v2
Enable all required feature flags before upgrading to 4.3.0.
If your RabbitMQ cluster had plugin rabbitmq_amqp1_0 enabled in RabbitMQ 3.13.x (and your cluster still serves AMQP 1.0 client connections in 4.x), your cluster should do at least one rolling update after enabling feature flag rabbitmq_4.0.0 but before upgrading to 4.3.0.
Deprecated Features
In 4.3.0 the deprecation phase of the following features advanced from permitted_by_default to denied_by_default:
- amqp_address_v1
- amqp_filter_set_bug
- global_qos
- queue_master_locator
- transient_nonexcl_queues
And the deprecated feature ram_node_type has been removed.
Mixed Version Cluster Compatibility
RabbitMQ 4.3.0 nodes can run alongside 4.2.x in the same cluster.
Mixed version clusters are a mechanism that allows rolling upgrades and are not meant to be run for extended periods of time (no more than a few hours).
Recommended Post-upgrade Procedures
This version does not require any additional post-upgrade procedures compared to other versions.
Changes Worth Mentioning
Core Server
EnhancementsWhen a message is rejected by a queue, RabbitMQ now provides the queue name and rejection reason to AMQP 1.0 publishers in the Rejected outcome. This is particularly useful when multiple queues are bound to an exchange, as it allows publishers to identify which specific queue out of several target queues rejected the message and why (e.g., maximum queue length reached or queue unavailable). Previously, publishers had no way to determine which queue rejected their message or the reason for rejection.
The queue name and reason are included in the info field of the Rejected outcome's error field:
queue: <queue name> reason: maxlen | unavailableGitHub issue: #15075
Quorum queues now support strict priority queues with per-priority message counts, correct redelivery ordering across priorities, and priority-aware message expiration scans.
GitHub issue: #13885
Quorum queues now support delayed retry with configurable backoff based on delivery count. When messages are returned (via reject, nack, or modify), they can be held in a delayed state before becoming available again. The delay is based on delivery count: min(min_delay * delivery_count, max_delay).
Configuration is available via queue arguments (x-delayed-retry-type, x-delayed-retry-min, x-delayed-retry-max) or policy keys (delayed-retry-type, delayed-retry-min, delayed-retry-max). The retry type can be set to disabled, all, failed, or returned.
GitHub issue: #13885
Quorum queues now support a configurable consumer timeout. When a consumer holds unacknowledged messages beyond the timeout, the messages are returned to the queue. For AMQP 1.0 clients, timed-out deliveries are released via DISPOSITION(state=released) instead of detaching the link, allowing the consumer to recover without re-attaching. MQTT consumers are also supported.
The timeout can be set via the x-consumer-timeout consumer argument, queue argument, consumer-timeout policy key, or the global consumer_timeout setting in rabbitmq.conf.
GitHub issue: #13885
A new consumer_disconnected_timeout setting controls how long quorum queues wait before returning messages when a consumer's node becomes unreachable due to a network partition. The default is 60 seconds.
Configurable via consumer_disconnected_timeout in rabbitmq.conf, the consumer-disconnected-timeout policy key, or the x-consumer-disconnected-timeout queue argument.
GitHub issue: #13885
Quorum queue recovery snapshots reduce recovery time after a member restart by avoiding the need to replay all enqueue commands from the log.
GitHub issue: #13885
Quorum queue snapshot throttling now uses WAL fill ratio and reclaimable byte tracking to make smarter snapshotting decisions, yielding roughly one snapshot per queue per WAL cycle instead of excessive snapshots in shallow, fast-flowing queues.
GitHub issue: #13885
Quorum queue memory optimisations: message references now use a compact packed integer representation ("compact" means up to 59-bit) when possible, halving per-message memory overhead in many scenarios. The rabbit_fifo_index module is no longer used by the main state machine.
GitHub issue: #13885
Quorum queues now allow unlimited explicit message returns. The delivery limit is based on delivery-count rather than acquired-count, so messages can be explicitly returned to the queue without counting towards the delivery limit.
GitHub issue: #13885
The x-modulus-hash exchange type, previously provided by the sharding plugin, was moved into the core and reworked to provide stable message routing (distribution) assuming a stable set of bindings, including between node restarts.
GitHub issue: #15849
When quorum queue members (replicas) are deleted from a node, either manually via rabbitmq-queues shrink or as part of rabbitmqctl forget_cluster_node, the members are stopped in parallel.
GitHub issue: #15081
Purging a quorum queue now also removes at-least-once dead-lettered messages that were pending delivery.
GitHub issue: #13885
AMQP 0-9-1: when a connection's credentials are refreshed, the permissions cache is now cleared and consumer permissions are re-validated immediately
GitHub issue: #16092
Quorum queue delivery limit can now be changed via policy without queue redeclaration
GitHub issue: #16035
Khepri topic exchange routing projection (v4): replaced the internal representation with a trie backed by an ordered_set ETS table, significantly improving routing performance for topic exchanges with many bindings
GitHub commit: 8929bc5ab4
Quorum queues notify AMQP 1.0 clients of Single Active Consumer state changes
GitHub commit: 817a4d4351
More rabbitmq.conf keys now accept tagged values (e.g., encrypted:...)
GitHub issue: #15808
Startup banner no longer includes the Erlang cookie hash
GitHub issue: #16087
Optimised AMQP 1.0 message container annotation handling during modify outcomes
GitHub issue: #15743
Bulk queue delete with Khepri has been optimized
GitHub issue: #14902
Optimised quorum queue message expiry scanning
GitHub issue: #15846
AMQP 0-9-1: configure permission checks now apply to passive queue and exchange declarations, matching the behavior of their regular counterparts
GitHub issue: #16085
Khepri snapshot interval is now configurable in rabbitmq.conf
GitHub issue: #16011
Quorum queue Raft settings: additional configuration settings are now exposed in rabbitmq.conf, including maximum segment size
GitHub issue: #15962
Bug FixesIf a quorum queue with a large backlog terminated abnormally, node memory footprint could spike.
GitHub issue: #15837
rabbitmqctl forget_cluster_node now removes all quorum queue and stream members (replicas) before proceeding to leave the metadata store cluster. This order minimizes the risk of some replicas being left behind on the leaving node.
GitHub issue: #15729
Quorum queue at-most-once dead lettering for the overflow behaviour drop-head now happens in the correct order.
GitHub issue: #14926
Feature flag state in the registry and on disk were not consistent for a period of time during node boot.
GitHub issue: #14943
Classic queues now implement AMQP 1.0 delivery-count and first-acquirer headers properly.
GitHub issue: #15020
Quorum queues returned an incorrect consumer count in the response to a passive queue.declare operation
GitHub issue: #16185
Classic queue shared store could leave stale index entries after segment removal or rollover, causing unnecessary disk space usage
GitHub issue: #16142
Bindings targeting Direct Reply-to pseudo-queues are now rejected instead of being silently accepted without any functional effect
GitHub issue: #15935
AMQP 1.0 sessions could grant too many credits in certain failure and recovery scenarios
GitHub commit: 1898ac1f3f
Quorum queues: acquired-count is now correctly preserved when dead-lettering
GitHub commit: 8a9cd3ee24
AMQP 1.0: attaching with a link handle already in use on the same session is now rejected with a handle-in-use session error, as required by the specification
GitHub commit: 4b59c19641
Quorum queues: Single Active Consumer could incorrectly report multiple active consumers in certain timing scenarios
GitHub issue: #15733
Quorum queues: consumer timeout could fail to trigger under certain conditions
GitHub issue: #15805
The channel limit exceeded error message now correctly identifies the per-user limit as the source of the constraint
GitHub issue: #15750
Stream Plugin
Bug Fixesstream.read_ahead is a new setting that controls how much data is prefetched from disk for stream reads (consumption).
GitHub issue: #14948
Stream deletion is now more resilient and can handle certain mid-deletion failure scenarios.
GitHub issue: #14852
new_stream coordinator command is now idempotent. Previously, concurrent or retried stream declarations could produce spurious errors even though the stream was created successfully
GitHub issue: #15706
Prometheus Plugin
Enhancements/metrics/detailed endpoint now supports filtering queue metrics by queue name
GitHub issue: #15689
Grafana Dashboards
EnhancementsThe dashboards were updated for the most recent RabbitMQ release series.
Replaced explicit rate intervals with $__rate_interval for better compatibility across different scrape intervals
GitHub issue: #15978
Management Plugin
EnhancementsGET /api/queues/{vhost} requests no longer perform unnecessary virtual host permission checks and log less (at debug level) as a result.
GitHub issue: #14923
Quorum queue delayed retry configuration and status, per-priority message counts, and consumer timeout state are now displayed in the management UI.
GitHub issue: #13885
GET /users/{user}/queues has been added.
GitHub issue: #15074
HTTP API displays static connection info (peer address, TLS details, auth mechanism) even when stats collection is disabled via rabbitmq.conf
GitHub issue: #16009
Bug Fixeseffective_policy_definition in HTTP API responses now returns an empty JSON object (not an array or empty string) when no policy applies to a queue
GitHub issue: #16017
Management UI: OAuth 2 used side by side with Basic Auth could fail to reload provider configuration correctly
GitHub issue: #15793
Management UI: preference cookie expiry now respects the configured session timeout setting rather than using a hardcoded value
GitHub issue: #15814
Management UI: users were presented with a 401 error after changing their own password via the UI. The session is now refreshed automatically
GitHub issue: #15730
The deprecated, unused GET /api/auth endpoint was removed. It has been out of use since 3.11 but never removed.
GitHub issue: #16083
POST /api/users/bulk-delete now respects the protected_users configuration, matching the behavior of the single-user DELETE /api/users/:name endpoint
GitHub issue: #16143
MQTT Plugin
EnhancementsFor MQTT 5.0 publishers, when a message is rejected because the target queue's maximum length is exceeded, RabbitMQ now returns a Quota exceeded reason code in the PUBACK packet. This provides publishers with actionable information about why their message was rejected.
GitHub issue: #15075
MQTT QoS 0 queue type now reports member information in management API responses
GitHub issue: #15656
Web MQTT Plugin
EnhancementsA default max_frame_size is now set on WebSocket connections, bounding decompressed frame sizes. The limit starts at mqtt.max_packet_size_unauthenticated and is raised after successful CONNECT
GitHub issue: #16180
A login_timeout is now enforced for WebSocket connections, matching the TCP listener behavior
GitHub issue: #16120
WebSocket Origin header will be validated web_mqtt.allow_origins
GitHub issue: #16158
STOMP Plugin
EnhancementsFor certain destinations that previously used non-durable (transient) queues, STOMP subscriptions now use exclusive queues, as non-exclusive transient queues are a deprecated property combination disabled by default as of this release
GitHub issue: #13016
Web STOMP Plugin
EnhancementsWebSocket Origin header validation is now available via web_stomp.allow_origins
GitHub issue: #16158
Federation Plugin
EnhancementsFederation links and their connections are now stopped in parallel. This significantly improves shutdown time for nodes with many (into thousands) federation links.
GitHub issue: #15271
Federation links no longer restart during plugin or node shutdown. For nodes with hundreds or thousands of federation links, link recovery could significantly delay node shutdown.
GitHub issue: #15258
Federation Management Plugin
Bug FixesFederation link restart operations now require the policymaker tag
GitHub issue: #16051
Shovel Plugin
EnhancementsAn optional src-consumer-name property can be specified to define the consumer tag (amqp091 and local src-protocol) or link identifier (amqp10 protocol)
Bug FixesImproved target node resource alarm handling for AMQP 1.0 and local shovels.
GitHub issue: #14886
Local shovels could run into an exception that would cause a shovel restart.
GitHub issue: #14872
AMQP 1.0 shovels ignored the sasl URI parameter.
GitHub issue: #14867
Shovel Management Plugin
Bug FixesShovel management: DELETE operations now require the policymaker tag, matching the federation plugin counterpart
GitHub issue: #16051
OAuth 2 Plugin
Bug FixesA usability improvement allows the plugin to automatically load the trusted system x.509 (TLS) certificates.
GitHub issue: #14927
The auth cache backend now correctly delegates token expiry timestamps to the wrapped backend, ensuring connections are closed when tokens expire
GitHub issue: #16100
LDAP Plugin
EnhancementsLDAP queries, including multi-line ones, can now be specified in rabbitmq.conf.
GitHub issue: #14868
Bug FixesA usability improvement allows the plugin to automatically load the trusted system certificates when the user only enables TLS for the LDAP client but does not configure any other settings.
GitHub issue: #14937
DN values are now handled per RFC 4514
GitHub issue: #16101
HTTP Auth Backend Plugin
EnhancementsThe HTTP Auth Backend can now optionally provide a custom authorization denial reason to AMQP clients. To opt in, return deny <Reason> (instead of only deny) in the HTTP response body of your HTTP auth backend and set the following in your rabbitmq.conf file:
auth_http.authorization_failure_disclosure = trueSee the README for more information.
GitHub issue: #14641
Sharding Plugin
EnhancementsThe x-modulus-hash exchange type, previously provided by the sharding plugin, was moved into the core and reworked to provide stable message routing (distribution) assuming a stable set of bindings, including between node restarts.
GitHub issue: #15849
Trust Store Plugin
EnhancementsRefactored certificate identification to avoid (unlikely) conflicts
GitHub issue: #16116
The plugin now provides CLI commands for trust store certificate management have been introduced
GitHub issue: #15746
Rejected certificates are now logged with additional diagnostic details
GitHub issue: #15889
Tracing Plugin
Bug FixesTrace file downloads now set the charset to UTF-8 when serving trace files.
GitHub issue: #13952
Dependency Changes
- ra was upgraded to 3.1.5
- khepri was upgraded to 0.18.0
- osiris was upgraded to 1.3.1
- gen_batch_server was upgraded to 0.9.2
- cuttlefish was upgraded to 3.6.0
Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-4.3.0.tar.xz instead of the source tarball produced by GitHub.
Original source - Apr 3, 2026
- Date parsed from source:Apr 3, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.3.0-rc.0
RabbitMQ 4.3.0-rc.0 previews a major release with Khepri as the only metadata store, removal of Mnesia and CQv1, and big quorum queue upgrades like strict priorities, delayed retry, consumer timeouts, recovery snapshots, and memory optimisations, plus plugin and UI improvements.
RabbitMQ 4.3.0-rc.0 is a preview of a new feature release.
Breaking Changes and Compatibility Notes
Mnesia and Parition Handling Strategies are Removed
Since only 4.2.x clusters can upgrade to 4.3.0 in place, this
won't be a breaking change for nearly all instalations but it will affect community
plugins that use Mnesia.All partition handling-related keys in rabbitmq.conf will be
accepted by 4.3.0 nodes but won't have any effect:cluster_partition_handling
cluster_partition_handling.pause_if_all_down.recover
cluster_partition_handling.pause_if_all_down.nodes.$nameStill, Team RabbitMQ recommends removing the above keys from rabbitmq.conf before or shortly
after upgrading.Classic Queues v1 Storage (CQv1) is Removed
This release removes the original classic queue storage implementation these days
known as CQv1. A 2nd generation implementation called CQv2 has been adopted
as the default starting with 4.2.0.This means that attempts to declare a queue using the following optional queue arguments will fail:
x-queue-mode set to any value
x-queue-version set to 1Existing classic queues upgraded to CQv2 during an earlier upgrade to 4.2.x will continue
operating as usual.Consumer Timeouts are No Longer Evaluated for Classic Queues and Streams
This release moves consumer timeout handling responsibility into the queues
themselves. Also, all protocols (except the stream protocol) now evaluate
consumer timeout for queue types that support them. Classic queues and streams
never evaluate consumer timeouts as their use cases cause less demand for it.Release Highlights
Khepri is Now The Only Metadata Store
As of this release, Khepri is the only metadata store supported
by RabbitMQ: Mnesia was removed completely.In practical operational terms, this means that
For a cluster to be available, a majority of nodes must be online at all times
Failure and partition recovery in a RabbitMQ cluster is now significantly
simpler and uniform: all components that have replicated state (Khepri, quorum queues, streams)
recover per Raft recovery semanticsQuorum Queues Enhancements
This release upgrades the Ra dependency to 3.x and introduces
a new (8th) version of the quorum queue state machine with several new features and optimisations:Strict priority queues with per-priority message counts, correct
redelivery ordering, and priority-aware message expirationDelayed retry for quorum queues: configurable increasing backoff when
messages are returnedConsumer timeout for quorum queues: configurable timeout for
unacknowledged messages, with protocol-specific handling for AMQP 1.0 and
MQTTRecovery snapshots and snapshot throttling to reduce recovery time
and improve snapshotting decisionsMemory optimisations including compact message references, optimised
tuple storage for delayed keys, and removal of rabbit_fifo_index usageUpgrading to 4.3.0
Documentation guides on upgrades
See the Upgrading guide for documentation on upgrades and GitHub releases
for release notes of individual releases.This release series supports upgrades from 4.2.x. Upgrades from earlier series are not supported:
users must upgrade to the latest available 4.2.x patch release before upgrading to 4.3.0.New Required Feature Flags
All feature flags introduced in 4.2.0 and earlier are required, including the following:
rabbitmq_4.2.0
rabbitmq_4.1.0
rabbitmq_4.0.0
khepri_db
quorum_queue_non_voters
message_containers_deaths_v2Enable all required feature flags before upgrading to 4.3.0.
If your RabbitMQ cluster had plugin rabbitmq_amqp1_0 enabled in RabbitMQ 3.13.x (and your cluster still serves AMQP 1.0 client connections in 4.x), your cluster should do at least one rolling update after enabling feature flag rabbitmq_4.0.0 but before upgrading to 4.3.0.
Deprecated Features
In 4.3.0 the deprecation phase of the following features advanced from permitted_by_default to denied_by_default:
amqp_address_v1
amqp_filter_set_bug
global_qos
queue_master_locator
transient_nonexcl_queuesAnd the deprecated feature ram_node_type has been removed.
Mixed version cluster compatibility
RabbitMQ 4.3.0 nodes can run alongside 4.2.x in the same cluster.
Mixed version clusters are a mechanism that allows rolling upgrades and are not meant to be run for extended
periods of time (no more than a few hours).Recommended Post-upgrade Procedures
This version does not require any additional post-upgrade procedures
compared to other versions.Changes Worth Mentioning
Core Server
Enhancements
When a message is rejected by a queue, RabbitMQ now provides the queue name and rejection reason to AMQP 1.0 publishers
in the Rejected outcome. This is particularly useful when multiple queues are bound to an exchange, as it allows
publishers to identify which specific queue out of several target queues rejected the message and why
(e.g., maximum queue length reached or queue unavailable). Previously, publishers had no way to determine which queue
rejected their message or the reason for rejection.The queue name and reason are included in the info field of the Rejected outcome's error field:
queue: <queue name>
reason: maxlen | unavailableGitHub issue: #15075
Quorum queues now support strict priority queues with per-priority message counts,
correct redelivery ordering across priorities, and priority-aware message expiration scans.GitHub issue: #13885
Quorum queues now support delayed retry with configurable backoff based on delivery count. When messages
are returned (via reject, nack, or modify), they can be held in a delayed state before becoming
available again. The delay is based on delivery count: min(min_delay * delivery_count, max_delay).
Configuration is available via queue arguments (x-delayed-retry-type, x-delayed-retry-min,
x-delayed-retry-max) or policy keys (delayed-retry-type, delayed-retry-min,
delayed-retry-max). The retry type can be set to disabled, all, failed, or returned.GitHub issue: #13885
Quorum queues now support a configurable consumer timeout. When a consumer holds unacknowledged
messages beyond the timeout, the messages are returned to the queue. For AMQP 1.0 clients,
timed-out deliveries are released via DISPOSITION(state=released) instead of detaching the link,
allowing the consumer to recover without re-attaching. MQTT consumers are also supported.
The timeout can be set via the x-consumer-timeout consumer argument, queue argument, consumer-timeout
policy key, or the global consumer_timeout setting in rabbitmq.conf.GitHub issue: #13885
A new consumer_disconnected_timeout setting controls how long quorum queues wait before returning
messages when a consumer's node becomes unreachable due to a network partition. The default is 60 seconds.
Configurable via consumer_disconnected_timeout in rabbitmq.conf, the consumer-disconnected-timeout
policy key, or the x-consumer-disconnected-timeout queue argument.GitHub issue: #13885
Quorum queue recovery snapshots reduce recovery time after a member restart by avoiding
the need to replay all enqueue commands from the log.GitHub issue: #13885
Quorum queue snapshot throttling now uses WAL fill ratio and reclaimable byte tracking
to make smarter snapshotting decisions, yielding roughly one snapshot per queue per WAL cycle
instead of excessive snapshots in shallow, fast-flowing queues.GitHub issue: #13885
Quorum queue memory optimisations: message references now use a compact packed integer
representation ("compact" means up to 59-bit) when possible, halving per-message
memory overhead in many scenarios. The rabbit_fifo_index module is no longer used by the
main state machine.GitHub issue: #13885
Quorum queues now allow unlimited explicit message returns. The delivery limit is based on
delivery-count rather than acquired-count, so messages can be explicitly returned to the
queue without counting towards the delivery limit.GitHub issue: #13885
When quorum queue members (replicas) are deleted from a node, either manually
via rabbitmq-queues shrink or as part of rabbitmqctl forget_cluster_node,
the members are stopped in parallel.GitHub issue: #15081
Purging a quorum queue now also removes at-least-once dead-lettered messages that were pending delivery.
GitHub issue: #13885
Bug Fixes
If a quorum queue with a large backlog terminated abnormally, node memory
footprint could spike.GitHub issue: #15837
rabbitmqctl forget_cluster_node now removes all quorum queue and stream members (replicas)
before proceeding to leave the metadata store cluster.
This order minimizes the risk of some replicas being left behind on the leaving node.GitHub issue: #15729
Quorum queue at-most-once dead lettering for the overflow behaviour drop-head now happens in the correct order.
GitHub issue: #14926
Feature flag state in the registry and on disk were not consistent for a period of time during node boot.
GitHub issue: #14943
Classic queues now implement AMQP 1.0 delivery-count and first-acquirer headers properly.
GitHub issue: #15020
Stream Plugin
Bug Fixes
stream.read_ahead is a new setting that controls how much data is prefetched from disk
for stream reads (consumption).GitHub issue: #14948/
Stream deletion is now more resilient and can handle certain mid-deletion failure scenarios.
GitHub issue: #14852
Grafana Dashboards
Enhancements
The dashboards were updated for the most recent RabbitMQ release series.
Management Plugin
Enhancements
GET /api/queues/{vhost} requests no longer perform unnecessary virtual host permission checks
and log less (at debug level) as a result.GitHub issue: #14923
Quorum queue delayed retry configuration and status, per-priority message counts, and consumer
timeout state are now displayed in the management UI.GitHub issue: #13885
GET /users/{user}/queues has been added.
GitHub issue: #15074
MQTT Plugin
Enhancements
For MQTT 5.0 publishers, when a message is rejected because the target queue's maximum length is exceeded,
RabbitMQ now returns a Quota exceeded reason code in the PUBACK packet. This provides publishers with
actionable information about why their message was rejected.GitHub issue: #15075
Federation Plugin
Enhancements
Federation links and their connections are now stopped in parallel.
This significantly improves shutdown time for nodes with many (into thousands) federation links.GitHub issue: #15271
Federation links no longer restart during plugin or node shutdown.
For nodes with hundreds or thousands of federation links, link recovery could
significantly delay node shutdown.GitHub issue: #15258
Shovel Plugin
Enhancements
An optional src-consumer-name property can be specified to define the consumer tag
(amqp091 and local src-protocol) or link identifier (amqp10 protocol)Bug Fixes
Improved target node resource alarm handling for AMQP 1.0 and local shovels.
GitHub issue: #14886
Local shovels could run into an exception that would cause a shovel restart.
GitHub issue: #14872
AMQP 1.0 shovels ignored the sasl URI parameter.
GitHub issue: #14867
OAuth 2 Plugin
Bug Fixes
A usability improvement allows the plugin to automatically load the trusted system x.509 (TLS) certificates.
GitHub issue: #14927
LDAP Plugin
Enhancements
LDAP queries, including multi-line ones, can now be specified in rabbitmq.conf.
GitHub issue: #14868
Bug Fixes
A usability improvement allows the plugin to automatically load the trusted system certificates
when the user only enables TLS for the LDAP client but does not configure any other settings.GitHub issue: #14937
HTTP Auth Backend Plugin
Enhancements
The HTTP Auth Backend can now optionally provide a custom authorization denial reason to AMQP clients.
To opt in, return deny <Reason> (instead of only deny) in the HTTP response body of your HTTP auth backend and set the following in your rabbitmq.conf file:auth_http.authorization_failure_disclosure = true
See the README for more information.
GitHub issue: #14641
Tracing Plugin
Bug Fixes
Trace file downloads now set the charset to UTF-8 when serving trace files.
GitHub issue: #13952
Dependency Changes
ra was upgraded from 2.17.2 to 3.1.2
osiris was upgraded to 1.3.0
cuttlefish was upgraded to 3.6.0
gen_batch_server was upgraded to 0.9.2Source Code Archives
To obtain source code of the entire distribution, please download the archive named rabbitmq-server-4.3.0.tar.xz
Original source
instead of the source tarball produced by GitHub. - Mar 17, 2026
- Date parsed from source:Mar 17, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.2.5
RabbitMQ 4.2.5 ships as a maintenance release with broad bug fixes and operational improvements across core server, stream, management, CLI, federation, Prometheus, Grafana, shovel, and Web STOMP. It improves recovery, validation, logging, migration throughput, and monitoring dashboards.
RabbitMQ 4.2.5 is a maintenance release in the 4.2.x release series.
It is strongly recommended that you read 4.2.0 release notes in detail if upgrading from a version prior to 4.2.0.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
Classic queues could terminate and restart during recovery in certain rare conditions.
GitHub issue: #15595
Quorum queues could incorrectly reject messages during deletion.
GitHub issue: #15554
Peer discovery could run into a crash when rabbit_nodes:list_members/0 returned an empty list due to an error or a timeout.
GitHub issue: #15568
Definition import now strips a leading UTF-8 BOM if the input file has one.
GitHub issues: #13748, #15550
Exceptions thrown by decorator callbacks (such as those used by federation) during policy change notifications were silently suppressed. They are now logged.
GitHub issue: #15525
Enhancements
Improved Mnesia-to-Khepri migration throughput.
GitHub issue: #15480
Additional aten settings are now exposed in rabbitmq.conf.
Previously only the poll interval was configurable.
GitHub issue: #15564
Stream Plugin
Bug Fixes
parse_command/1 crashed with a function_clause error when receiving a zero-size frame, such as those sent by load balancer probes or port scanners.
GitHub issue: #15703
rabbit_stream_manager could crash with a case_clause error when a stream declaration failed due to a metadata store timeout.
GitHub issue: #15699
Enhancements
Less log noise from load balancer and port scanner probes (that do not perform an AMQP 1.0 or AMQP 0-9-1 handshake)
GitHub issue: #15715
Management Plugin
Bug Fixes
Request bodies above the configured maximum limit are now rejected earlier.
GitHub issue: #15712
Validation improvements for several API endpoints.
They now ignore node names that do not refer to existing cluster members, reject unknown fields, etc.
GitHub issues: #15622, #15623, #15625, #15627
Queue API responses now include policy-related fields (policy, operator_policy, effective_policy_definition) and delivery_limit when management stats collection is disabled via rabbitmq.conf.
GitHub issues: #15182, #15651
CLI Tools
Bug Fixes
rabbitmq-diagnostics status and rabbitmqctl status crashed when targeting a node in maintenance mode because vm_memory_high_watermark was nil (the vm_memory_monitor process does not run in that state).
GitHub issues: #15678, #15680
Enhancements
rabbitmq-plugins now produces a clearer error message when run by a non-root user.
GitHub issue: #15701
Federation Management Plugin
Bug Fixes
The x-internal-purpose and consumer_timeout argument values are now correctly escaped.
GitHub issues: #15606, #15708
Prometheus Plugin
Bug Fixes
Per-object metrics endpoint (/metrics/per-object) no longer emits duplicate HELP and TYPE metadata lines for Raft metrics when both quorum queues and Khepri are in use, which caused scraper parser errors.
GitHub issues: #15600, #15610
Grafana Dashboards
Enhancements
The Overview dashboard's "TCP sockets available" panel was replaced with a "File descriptors available" panel that uses two modern metrics, rabbitmq_process_max_fds and rabbitmq_process_open_fds.
GitHub issues: #12673, #15618
Shovel Plugin
Bug Fixes
An attempt to declare a dynamic shovel with multiple src-queue-args or dest-queue-args values configured could run into an exception during validation.
GitHub issues: #8323, #8356
Web STOMP Plugin
Bug Fixes
A terminated heartbeat monitor process could cause a crash during connection shutdown.
GitHub issue: #15607
Dependency Changes
None in this release.
Original source - Feb 20, 2026
- Date parsed from source:Feb 20, 2026
- First seen by Releasebot:May 23, 2026
RabbitMQ 4.2.4
RabbitMQ ships 4.2.4 as a maintenance release with bug fixes and usability improvements across the core server, MQTT, Stream, Management, Shovel, Trust Store, AWS Peer Discovery, and Tracing plugins, plus new API, CLI, and upgrade tooling enhancements.
RabbitMQ 4.2.4 is a maintenance release in the 4.2.x release series.
It is strongly recommended that you read 4.2.0 release notes in detail if upgrading from a version prior to 4.2.0.
Minimum Supported Erlang Version
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on Erlang version requirements for RabbitMQ.
Nodes will fail to start on older Erlang releases.
Changes Worth Mentioning
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Core Server
Bug Fixes
Classic queue message store could run into an exception when a file was concurrently deleted by a compaction operation.
GitHub issue: #15411
rabbit_quorum_queue:stat/2 could fail when the quorum queue leader was undefined.
GitHub issues: #15400, #15423
The amq.rabbitmq.log exchange is now declared unconditionally at node boot, avoiding a potential deadlock between feature flag enablement and logging to the exchange sink.
GitHub issue: #15320
MQTT Plugin
Bug Fixes
Variable interpolation in topic permissions now escapes the special regular expression characters before interpolation.
GitHub issue: #15442
Stream Plugin
Bug Fixes
Single Active Consumer coordinator could deadlock when a consumer being deactivated would lose its connection, leaving the consumer group without an active consumer.
GitHub issue: #15353
Management Plugin
Bug Fixes
The Policies page in the management UI incorrectly displayed quorum queue arguments twice on the declaration form in place of stream queue arguments.
GitHub issue: #15335
The clustering listener now correctly reports its TLS enablement status.
GitHub issue: #15399
Enhancements
GET /api/overview and GET /api/nodes now report crypto library (such as OpenSSL) version.
GitHub issue: #15468
RabbitMQ and Erlang/OTP versions are now included in GET /api/nodes responses.
GitHub issue: #15454
Login page usability improvements: autofocus on the username field and autocomplete attributes for browser password manager integration.
GitHub issue: #15398
CLI Tools
Enhancements
rabbitmq-upgrade has_reached_target_cluster_size is a new command that checks whether the cluster has reached its target size, as provided in rabbitmq.conf.
This is useful for automating rolling upgrades, particularly on Kubernetes.
GitHub issue: #15404
Shovel Plugin
Bug Fixes
Stopping and deleting a shovel could fail with a badmatch exception when the underlying worker process no longer existed.
GitHub issue: #15408
Trust Store Plugin
Enhancements
HTTPS endpoint requests now have a configurable timeout (20 seconds by default), preventing the plugin from hanging indefinitely when a provider fails to respond.
GitHub issues: #15308, #15310
AWS Peer Discovery Plugin
Bug Fixes
Nodes on EC2 instances in non-running states (stopping, stopped, shutting-down, terminated) are now filtered out from peer discovery results.
GitHub issue: #15388
Enhancements
Multiple hostname resolution paths can now be configured. This is an upgrade pathway for scenarios where resolution hostnames have to change.
GitHub issue: #14705
Tracing Plugin
Bug Fixes
The plugin now uses UTF-8 encoding for traced messages.
GitHub issue: #15439
Dependency Changes
ra was upgraded to 2.17.2
Original source
This is the end. You've seen all the release notes in this feed!
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.