RabbitMQ 4.3.7 → 4.4.0
1 release · 4 breaking changes · 0 security fixes · 0 advisories fixed
0security4breaking0deprecated36feature0fix
Breaking changes
- breaking 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-footer RabbitMQ 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… in 4.4.0
- breaking Likewise, the x-basic-delivery-mode, x-basic-priority and x-basic-expiration message annotations are no longer parsed. They were written 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… in 4.4.0
- breaking OpenID Connect discovery responses are now validated more strictly. A deployment whose identity provider serves non-HTTPS (http://) endpoints, or whose issuer claim does not match the discovery endpoint used to retrieve it, will fail discovery validation after the upgrade. This is known to affect… in 4.4.0
- breaking GET /api/auth/hash_password/{password} was replaced with another endpoint, POST /api/auth/hash_password. The new endpoint consumes a POST body with JSON document with one key {"password": "..."} in 4.4.0
Security changes
None in the release notes.
Every release in between
breakingThe 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-footer RabbitMQ 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…
breakingLikewise, the x-basic-delivery-mode, x-basic-priority and x-basic-expiration message annotations are no longer parsed. They were written 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…
breakingOpenID Connect discovery responses are now validated more strictly. A deployment whose identity provider serves non-HTTPS (http://) endpoints, or whose issuer claim does not match the discovery endpoint used to retrieve it, will fail discovery validation after the upgrade. This is known to affect…
breakingGET /api/auth/hash_password/{password} was replaced with another endpoint, POST /api/auth/hash_password. The new endpoint consumes a POST body with JSON document with one key {"password": "..."}
featureThis version fully supports Erlang 28 and 29 series for both new clusters and rolling upgrade scenarios, assuming that . Important: in cases where RabbitMQ is upgraded to 4.4.0 and Erlang is upgraded to 28+ at the same time, we highly recommend first upgrading to 4.3.7 or a later patch, a 4.3…
featureQuorum queues now support delayed messages. A message with an x-opt-delivery-time annotation or header set to a future time, in milliseconds since the Unix epoch, is routed and enqueued immediately but only delivered to consumers once that time is reached. AMQP 1.0 clients set it as a message…
featureAMQP 1.0 clients can now request sole (exclusive) ownership of a container ID. In case of a conflict, the server either refuses the new connection or closes the existing one, depending on what the client requested, per the AMQP 1.0 Connection Uniqueness protocol extension. GitHub issue:
featureA new, optional x-name-prefix queue argument sets the prefix used for a server-named queue's generated name, capped at 64 bytes. The default prefix remains amq.gen. This feature is specific to AMQP 0-9-1. GitHub issue:
featureThe classic queue shared message store gained a new v2 on-disk file format (.sqs). New files are written in v2 automatically. Existing v1 files (.rdq) are left as-is. Note that a node with v2 files present cannot be downgraded to 4.3.x or earlier. GitHub issue:
featureClassic queues now perform compaction more efficiently. GitHub issue:
featurex-modulus-hash exchange routing is now stable: assuming a topology that does not change, messages carrying the same routing key are now routed to the same bound destination. Note: the exchange type has been moved from rabbitmq_sharding to the core, so it is now available even when said plugin is…
featureA change to the delivery-limit policy key now takes effect for existing quorum queues. Previously the delivery limit could not be updated from a policy. Now quorum queues reconfigure their delivery-limit value when a policy is added or updated. When the policy is removed the queue goes back to the…
featureA passive declaration of a queue or an exchange (a check that it exists) requires any one of the configure, write or read permissions on that queue or exchange. This applies to queue.declare and exchange.declare with passive set to true in AMQP 0-9-1, and to queue lookups in AMQP 1.0 management.…
featureReduce boot time of blank (brand new) nodes. GitHub issue:
featureEncrypted value support for the definitions.https.url key in rabbitmq.conf. GitHub issue:
featurePassword salts for internal users are now generated using a cryptographically secure pseudorandom number generator (CPRNG). GitHub issue:
featureA topic exchange binding key can now contain at most two multi-segment (#) wildcards. GitHub issue:
featureRedeclaring a stream with an x-max-age value that is equal to the existing one but written in different units, for example 1D as 24h, is no longer rejected as having non-equivalent arguments. GitHub issues:
featureA stream can now start at an offset other than 0, set with the new x-stream-initial-offset optional queue argument. While the stream is empty, the first and next offset specifications resolve to this offset. The stream protocol accepts the same value as the stream-initial-offset argument of the…
featureMultiple stream coordinator efficiency improvements. For example, the stream coordinator now retries failed stream member actions sooner, with keeping a related stream partition process blocked for the retry delay. Failed operations are now retried after a short randomised delay, and actions that…
featureCertain classic queue recovery scenarios now avoid a counterproductive timeout of 60s. GitHub issue:
featureReduce CPU use of mostly idle quorum queues that do not have any queue decorators configured (which is the common, baseline case). GitHub issues:
featurePBKDF2-HMAC-SHA256 now can be used for password hashing: ini password_hashing_module = rabbit_password_hashing_pbkdf2_sha256 GitHub issue:
featureAMQP listeners can now bind to a Unix domain socket, using the same listeners.tcp.* settings as a TCP listener: ini listeners.tcp.1 = unix:/var/run/rabbitmq/rabbitmq.sock:0 GitHub issue:
featureconnection_max and channel_max were renamed to max_connections and max_channels, respectively, in rabbitmq.conf. The original names are still supported. GitHub issue:
featureMessages are now converted from AMQP 0-9-1 to AMQP 1.0 as a single data section, unless its payload consists of valid AMQP 1.0 body sections. An expiration value that cannot be parsed is now ignored during that conversion. GitHub issue:
featureClient connection listener startup now can be delayed by a configurable number of seconds (default: no additional delay): ini listeners.startup_delay = 10 GitHub issues:
featureInternal peer discovery improvements. GitHub issue:
featureTwo new commands, rabbitmqctl sole_connection_status and rabbitmqctl sole_connection_force_delete, inspect and manage AMQP 1.0 sole connections. GitHub issue:
featureCLI 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:
featurestream.max_connections is a new rabbitmq.conf setting that limits the concurrent number of RabbitMQ Stream Protocol client connections. GitHub issue:
featurestream.max_super_stream_partitions is a new rabbitmq.conf setting that limits the number of partitions a super stream can have. GitHub issue:
featureA new endpoint, GET /api/init, cuts the number of blocking requests the UI has to make with certain authentication and login flows. GitHub issue:
featureThe Referrer-Policy response header value of the HTTP API and the UI can now be configured using the management.headers.referrer_policy key. GitHub issue:
featureSupport for multiple listeners for all HTTP-based protocols and the HTTP API. GitHub issues:
featuremqtt.max_connections is a new rabbitmq.conf setting that limits the concurrent number of MQTT client connections. GitHub issue:
featureMQTT 5.0: a Receive Maximum value of 0 is now rejected per the protocol spec. GitHub issue:
featureThe MQTT retained message store now has per-virtual host limits on the number of retained messages and their total size. A message that would exceed either limit is not retained. The defaults are 100,000 messages and 1 GiB. Both can be changed, or set to infinity: ini…
featureFollowing the footsteps of AMQP 1.0 and MQTT in previous years, the STOMP is now a standardlone protocol, that is, it is no longer built on AMQP 0-9-1. GitHub issue:
featureGitHub issue:
+35 more items in the release notes