github rabbitmq/rabbitmq-server v4.3.6
RabbitMQ 4.3.6

4 hours ago

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.

    GitHub issues: #17255, #17257

  • Quorum queue continuous membership reconciliation could add more replicas than
    the configured target.

    GitHub issues: #17310, #17311

  • 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_failed channel 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-age values are now compared as durations, so redeclaring a stream
    with 1D when it was declared with 24h no longer fails with a
    PRECONDITION_FAILED (non-equivalent argument) exception.

    With contributions from @Vishal-770.

    GitHub issues: #8509, #17259

  • AMQP 1.0 SQL filters: the value matched by a LIKE pattern 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.conf setting: 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 a precondition_failed channel 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.conf setting: 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.

    GitHub issues: #13153, #17289

  • 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 example basic.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 of 0:

    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_expiration now handles certificate files
    that cannot be read, and certificates that use the RFC 5280 UTCTime format,
    the same way the HTTP API health check does.

    Contributed by @Vishal-770.

    GitHub issues: #12464, #17345

Enhancements

  • Two new commands, rabbitmqctl list_channel_interceptors and
    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.

    GitHub issues: #17236, #17239

Management Plugin

Bug Fixes

  • The channels list and individual channel pages now display basic information
    when management statistics are disabled, instead of returning a 400 Bad Request.

    GitHub issues: #8240, #17198

  • Several HTTP API endpoints returned a 500 instead of a 400 for 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/alarms and GET /api/health/checks/local-alarms.

    GitHub issues: #17245, #17247

  • 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 5280 UTCTime format.

    Contributed by @Vishal-770.

    GitHub issues: #12464, #17345

  • 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-protocol and dest-protocol values.

    GitHub issues: #17341, #17343

  • A local shovel with src-delete-after set 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)
    and mqtt.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

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.

    GitHub issues: #17277, #17278

  • 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 404 response from the Consul API no longer stops node boot; peer discovery is retried instead.

    GitHub issues: #17211, #17215

Dependency Changes

  • cowboy was upgraded to 2.19.0
  • cowlib was upgraded to 2.20.0
  • gun was upgraded to 2.6.0
  • khepri was upgraded to 0.18.1
  • ranch was upgraded to 2.3.0

Don't miss a new rabbitmq-server release

NewReleases is sending notifications on new releases.