RabbitMQ 4.3.1
- Stream protocol maximum concurrent client connections can now be capped using stream.max_connections configuration key
- Maximum concurrent HTTP API connections can now be capped using management.tcp.max_connections and management.ssl.max_connections configuration keys
- Peer certificate serial number is now exposed in the management UI and select CLI commands
- Maximum concurrent HTTP API connections can now be capped using prometheus.tcp.max_connections and prometheus.ssl.max_connections configuration keys
- Renamed channel_max to max_channels in rabbitmq.conf with original name still supported as an alias
- Renamed connection_max to max_connections in rabbitmq.conf with original name still supported as an alias
- The per-node max_connections limit is now enforced for AMQP 1.0 connections as well as AMQP 0-9-1 ones
- Plain-text clients connecting to TLS listeners or vice versa now receive more useful error messages for AMQP 0-9-1, MQTT, STOMP, and Stream protocols
- The permission cache is now traversed less often during AMQP 1.0 management and AMQP 0-9-1 channel checks
- Messages published to a topic exchange with an empty routing key are no longer incorrectly routed to queues bound with an empty binding key
- Virtual hosts are no longer falsely considered deleted in certain metadata store error and timeout scenarios
- Passive queue and exchange declarations are now allowed for users with any permission on the virtual host, not only configure
- Classic queue shared message store garbage collection no longer falls behind other queue activity under heavy load
- Classic queue message store garbage collection is now stopped cleanly during node shutdown
- Quorum queues now gracefully handle negative priority values
- Quorum queues now accept delayed retry-related policy keys in policy definitions
- Quorum queue at-least-once dead lettering no longer directs commands to the wrong replica
- Quorum queues reintroduced Raft WAL max entries default of 500K
- Quorum queues no longer crash during recovery after an unclean shutdown
- Stream queue argument validation was improved
- Stream protocol open frame with empty properties is now handled correctly
- HTTP API GET /api/connections no longer returns 500 response when STOMP connections are present
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_v5feature 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, orread), not onlyconfigure. -
Classic queue shared message store GC could fall behind other queue activity under heavy load
-
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.
-
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_maxwas renamed tomax_channelsinrabbitmq.conf. The original name is still supported as an alias.GitHub issue: #16347
-
connection_maxwas renamed tomax_connectionsinrabbitmq.conf. The original name is still supported as an alias.GitHub issue: #16347
-
The per-node
max_connectionslimit 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.
-
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
openframe 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_connectionsconfiguration key inrabbitmq.conf.GitHub issue: #16341
Management Plugin
Bug Fixes
-
HTTP API
GET /api/connectionscould 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_connectionsconfiguration keys inrabbitmq.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_connectionsconfiguration keys inrabbitmq.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_connectionsconfiguration key inrabbitmq.conf.GitHub issue: #16367
Federation Plugin
Bug Fixes
LDAP Plugin
Enhancements
-
New
rabbitmq.confconfiguration settings for TLS cipher suites:auth_ldap.ssl_options.ciphers.*.GitHub issue: #16226
HTTP Auth Backend Plugin
Enhancements
-
New
rabbitmq.confconfiguration settings for TLS cipher suites:auth_http.ssl_options.ciphers.*.GitHub issue: #16226
Auth Backend Cache Plugin
Bug Fixes
Trust Store Plugin
Bug Fixes
-
A user-provided
fail_if_no_peer_certvalue in the plugin's TLS options is now respected. Previously, an internal default could override the configured value.GitHub issue: #16201
Enhancements
-
New
rabbitmq.confconfiguration settings for TLS cipher suites:trust_store.ssl_options.ciphers.*.GitHub issue: #16226