RabbitMQ 4.3.6 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
-
Deleting an exchange did not delete the bindings that pointed to it as a destination.
A few related cases around auto-delete exchanges, transient queue cleanup and
virtual host deletion were fixed along the way. -
Quorum queue continuous membership reconciliation could add more replicas than
the configured target. -
Certain malformed
urn:uuid:correlation or message ID caused exceptions during message format conversion.
Such values are now rejected.GitHub issue: #17328
-
An operation that refers to an unknown queue type now fails with a
precondition_failedchannel exception instead of an exception and abrupt channel termination.GitHub issue: #17327
-
Classic queue recovery counted some message store references more than once.
GitHub issue: #17351
-
x-max-agevalues are now compared as durations, so redeclaring a stream
with1Dwhen it was declared with24hno longer fails with a
PRECONDITION_FAILED(non-equivalent argument) exception.With contributions from @Vishal-770.
-
AMQP 1.0 SQL filters: the value matched by a
LIKEpattern with several
wildcards is now bounded independently of the message size limit.GitHub issue: #17332
-
Direct connections (used by the shovel and federation plugins) now enforce
channel_max_per_node
the same way network connections do.Contributed by @Ayanda-D.
GitHub issue: #16610
Enhancements
-
New
rabbitmq.confsetting:channel_tx_message_max. It bounds the number of publishes a channel
buffers in an open AMQP 0-9-1 transaction, and defaults to 10,000. Going over the limit
results in aprecondition_failedchannel exception.Most applications won't be affected by this change and likely will not have to
increase the default limit.GitHub issue: #17331
-
New
rabbitmq.confsetting:listeners.startup_delay. It delays the start of client connection
listeners by the specified number of seconds, for environments where applications
begin connecting as soon as a port is open, before the node has finished booting.Contributed by @Vishal-770.
-
Several channel interceptors can now be registered for the same AMQP 0-9-1 operation,
as long as they use different priorities. Previously, if two enabled plugins intercepted
the same operation, for examplebasic.publish, channels could not be opened at all.Priorities are set per interceptor module in
rabbitmq.conf. Lower values run first,
and omitted interceptors are assumed to have the priority of0:channel_interceptor.priorities.rabbit_timestamp_interceptor = 1 channel_interceptor.priorities.rabbit_routing_node_stamp_interceptor = 2 channel_interceptor.priorities.rabbit_sharding_interceptor = 3
Contributed by @Ayanda-D.
GitHub issue: #17182
-
Shovels now support a new AMQP URI query parameter,
customize_hostname_check,
that controls how the target hostname is matched against the server certificate,
for example with wildcard certificates.Contributed by @jiangranwang.
GitHub issue: #17221
CLI Tools
Bug Fixes
-
rabbitmq-diagnostics check_certificate_expirationnow handles certificate files
that cannot be read, and certificates that use the RFC 5280UTCTimeformat,
the same way the HTTP API health check does.Contributed by @Vishal-770.
Enhancements
-
Two new commands,
rabbitmqctl list_channel_interceptorsand
rabbitmqctl set_channel_interceptor_priorities, list the active channel interceptors
and adjust their priorities at runtime. Priorities set this way are not persisted
and do not survive a node restart.Contributed by @Ayanda-D.
GitHub issue: #17182
Stream Plugin
Bug Fixes
-
During a rolling upgrade, a stream metadata request could leave out a peer node
that ran a different version.GitHub issue: #17333
Stream Management Plugin
Bug Fixes
-
The publishers and consumers listing now verifies virtual host access like
other comparable HTTP API endpoints.
Management Plugin
Bug Fixes
-
The channels list and individual channel pages now display basic information
when management statistics are disabled, instead of returning a400 Bad Request. -
Several HTTP API endpoints returned a
500instead of a400for invalid
range parameters or an invalid timeout header:GET /api/nodes/{node},
GET /api/healthchecks/node[/{node}],GET /api/federation-links,
GET /api/health/checks/alarmsandGET /api/health/checks/local-alarms. -
The certificate expiration health check no longer responds with a
500
for certificate files that cannot be read, or for certificates that use the
RFC 5280UTCTimeformat.Contributed by @Vishal-770.
-
Optional argument (
x-*) values are no longer coerced to strings in the management UI.GitHub issue: #17177
Enhancements
-
Consumers on protocols without channels (for example, AMQP 1.0 and MQTT)
now link directly to their connection in the management UI.Contributed by @vampirebyte.
GitHub issue: #17206
Shovel Plugin
Bug Fixes
-
Shovel types provided by plugins can now be used as
src-protocolanddest-protocolvalues. -
A local shovel with
src-delete-afterset to a number could in some cases
transfer more messages than that number.GitHub issue: #17209
MQTT Plugin
Enhancements
-
The retained message store now has per-virtual host limits on both the number of messages
and their total size:mqtt.retained_message_store.max_messages(defaults to 100000)
andmqtt.retained_message_store.max_size_bytes(defaults to 1 GiB).GitHub issue: #17189
STOMP Plugin
Bug Fixes
-
STOMP and Web STOMP connections now enforce credential expiry (for example, of OAuth 2 tokens)
the same way other protocols do.GitHub issue: #17244
Web MQTT and Web STOMP Plugins
Bug Fixes
-
web_mqtt.ssl.*andweb_stomp.ssl.*now accept more TLS keys inrabbitmq.conf,
includingverifyandfail_if_no_peer_cert.
LDAP AuthN and AuthZ Backend Plugin
Bug Fixes
-
DN escaping introduced in an earlier release was too strict for certain Active Directory
setups, for example when the client provides a full DN that contains a backslash.
Escaping is now applied to DN template values only. -
Active Directory down-level logon names (
DOMAIN\username) can be used to log in again.Contributed by @jiangranwang.
GitHub issue: #17220
Trust Store Plugin
Enhancements
-
The trust store now also covers the HTTP API, Web MQTT
and Web STOMP listeners.GitHub issue: #17303
Consul Peer Discovery Plugin
Bug Fixes
-
A
404response from the Consul API no longer stops node boot; peer discovery is retried instead.