rabbitmq-server
v4.3.7Open source RabbitMQ: core server and tier 1 (built-in) plugins
- Maintenance
- Active1180 commits in 3 months · bus factor 2
- License
- OtherUnknown
- Security
- 30 advisories6 high, 17 medium, 7 low · Scorecard 5.7/10
- Supported versions
- No scheduleendoflife.date does not track this project
14k stars · 4k forks · 277 open issues · last release 26 days ago · data checked 5 hours ago
Breaking changes
What to check before upgrading, taken from the notes of the last 30 releases.
- v4.4.0Oct 19, 2026
Breaking Changes and Compatibility Notes
- The following AMQP 0-9-1 headers are no longer parsed:
x-amqp-1.0-properties x-amqp-1.0-app-properties x-amqp-1.0-message-annotations x-amqp-1.0-footerRabbitMQ 3.13 and earlier used them to carry the AMQP 1.0 sections of a
message received over AMQP 1.0. Nothing has written them since 4.0, so only
a message stored by a 3.13 or earlier node and not read since carries them.
Such a message is still delivered, with these headers converted like any
other
x-header rather than restored as AMQP 1.0 sections.- Likewise, the
x-basic-delivery-mode,x-basic-priorityand
x-basic-expirationmessage annotations are no longer parsed. They werewritten before 4.0 when an AMQP 0-9-1 message was encoded as AMQP 1.0 for a
stream, so only a stream entry written by a 3.13 or earlier node carries
them, and reading it no longer restores those three properties.
- OpenID Connect discovery responses are now validated more strictly. A
deployment whose identity provider serves non-HTTPS (
http://) endpoints,or whose
issuerclaim does not match the discovery endpoint used toretrieve it, will fail discovery validation after the upgrade.
This is known to affect Cloud Foundry UAA, whose issuer is its token endpoint URL
rather than a prefix of its discovery endpoint.
Set
auth_oauth2.discovery.verify_issuerand/orauth_oauth2.discovery.verify_https_endpointstofalsebefore upgrading - v4.3.0Apr 23, 2026
Breaking Changes and Compatibility Notes
Mnesia and Parition Handling Strategies are Removed
Since only
4.2.xclusters can upgrade to4.3.0in place, thiswon'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.confwill beaccepted by
4.3.0nodes but won't have any effect:cluster_partition_handlingcluster_partition_handling.pause_if_all_down.recovercluster_partition_handling.pause_if_all_down.nodes.$name
Team RabbitMQ recommends removing the above keys from
rabbitmq.confbefore 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.confkeyand 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). # - v4.2.0Oct 27, 2025
Breaking Changes and Compatibility Notes
Default value for AMQP 1.0
durablefield.Starting with RabbitMQ 4.2, if a sending client omits the header section, RabbitMQ assumes the
durablefield to befalsecomplying with the AMQP 1.0 spec:AMQP 1.0 apps or client libraries must set the
durablefield of the header section totrueto mark the message as durable.Team RabbitMQ recommends client libraries to send messages as durable by default.
All AMQP 1.0 client libraries maintained by Team RabbitMQ send messages as durable by default.
Mandatoryflag in Direct Reply-ToStarting with RabbitMQ 4.2, if an AMQP 0.9.1 Direct Reply-To responder (RPC server) publishes with the
mandatoryflag set, thenamq.rabbitmq.reply-to.*is treated as a queue.Whether the requester (RPC client) is still there to consume the reply is not checked at routing time.
In other words, if the responder publishes to only this queue name, then the message will be considered "routed" and RabbitMQ will therefore not send a
basic.return.Very Rarely Used .cacerts Settings are Removed from rabbitmq.conf
*.cacerts(not to be confused withcacertfile) settings inrabbitmq.confdid not have the expected effect and were removedto eliminate confusion.
Upgrading to 4.2.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.1.x,4.0.xand3.13.x.If upgrading from a
3.13.xcluster that uses classic mirrored queues,take a look at what modern CLI tools can offer for such migrations away from classic mirrored queues
Blue/Green Deployment-style upgrades are available for migrations
from RabbitMQ
3.12.xseries.
Release history
All releases on GitHubRabbitMQ 4.3.7
RabbitMQ 4.3.7 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
- The
basic.cancelnotification sent on a consumer delivery timeout
now properly clears consumer state even if the client does not respond with basic.cancel-ok.
Most clients do not respond, and nodes older than 4.3.0 do not accept a client-sent
basic.cancel-ok at all. The server now advertises whether one is supported, and a short timeout
removes the consumer if the client never responds.
A new rabbitmq.conf setting controls what happens on such a timeout:
# notify_consumer (the default) sends basic.cancel to clients that support
# the consumer_cancel_notify capability and closes the channel for others
# close_channel always closes the channel, which is the pre-4.3.0 behavior
consumer_timeout_response = notify_consumer
GitHub issue: #17734
- Classic queue expiration (
x-expires) timestamps were lost on node restart, so the queue
TTL timer did not fire when it was supposed to if the TTL outlived the restart.
- Routing to queues now handles concurrent queue deletion gracefully in more places, avoiding
confusing (and also non-actionable) exceptions.
This also avoids unnecessary publisher confirm noise, most visible with transient exclusive
queues bound to a topic exchange.
- A quorum queue declaration that timed out waiting for a remote Khepri projection left
the queue metadata behind and prevented a retry with the same name.
Contributed by @chenshi5012.
GitHub issue: #17550
- Message conversion between AMQP 1.0 and AMQP 0-9-1 no longer fails on AMQP 1.0 values
that AMQP 0-9-1 cannot represent.
GitHub issue: #17536
- Definition import now rejects a binding with an unrecognised
destination_type.
GitHub issue: #17587
- AMQP 0-9-1 content headers are validated more strictly.
GitHub issue: #17697
Enhancements
ssl_options.supported_groupscan now be used inrabbitmq.confto restrict
the named groups offered for TLS 1.3 key exchange.
GitHub issue: #17555
CLI Tools
Enhancements
- CLI commands that accept sensitive values as interactive input now suppress terminal echoing
where possible. This behavior is specific to Erlang 28 and 29.
GitHub issue: #17585
Management Plugin
Bug Fixes
- Pagination bug fixes for stream connections.
- A
404for a virtual host the user has no permissions on is now identical to the404for
a virtual host that does not exist.
GitHub issue: #17540
- The OAuth 2 token proxy responded with a
500to some malformed JSON documents.
GitHub issue: #17646
- The default
Content-Security-Policyvalue now includesbase-uri 'none'.