Skip to content

RabbitMQ 4.1.0-beta.2

Pre-release
Pre-release
Compare
Choose a tag to compare
@rabbitmq-ci rabbitmq-ci released this 23 Nov 23:37
· 188 commits to main since this release
10508c0

RabbitMQ 4.1.0-beta.2 is a preview release (in development) of a new feature release.

See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.

Highlights

Some key improvements in this release are listed below.

Initial Support for AMQP 1.0 Filter Expressions

Support for the properties and appliation-properties filters of AMQP Filter Expressions Version 1.0 Working Draft 09.

Feature Flags Quality of Life Improvements

Graduated (mandatory) feature flags several minors ago has proven that they could use some user experience improvements.
For example, certain required feature flags will now be enabled on node boot when all nodes in the cluster support them.

See core server changes below as well as the GitHub project dedicated to feature flags improvements
for the complete list of related changes.

Breaking Changes and Compatibility Notes

MQTT

  • The default MQTT Maximum Packet Size changed from 256 MiB to 16 MiB.

    This default can be overridden by configuring mqtt.max_packet_size_authenticated.
    Note that this value must not be greater than max_message_size (which also defaults to 16 MiB).

Erlang/OTP Compatibility Notes

This release requires Erlang 26.2.

Provisioning Latest Erlang Releases explains
what package repositories and tools can be used to provision latest patch versions of Erlang 26.x.

Release Artifacts

TBD

Upgrading to 4.1.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 only supports upgrades from 4.0.x.

Blue/Green Deployment-style upgrades are avaialble for migrations from 3.12.x and 3.13.x series
to 4.1.x.

Required Feature Flags

None/TBD.

Mixed version cluster compatibility

RabbitMQ 4.1.0 nodes can run alongside 4.0.x nodes. 4.1.x-specific features can only be made available when all nodes in the cluster
upgrade to 4.0.0 or a later patch release in the new series.

While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes will be covered in future updates.
Once all nodes are upgraded to 4.1.0, these irregularities will go away.

Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).

Recommended Post-upgrade Procedures

TBD

Changes Worth Mentioning

This section is incomplete and will be expanded as 4.1 approaches its release candidate stage.

Core Server

Enhancements

  • Feature flag quality of live improvements.

    Certain required feature flags will now be automatically required on node boot
    and do not have to be explicitly enabled before an upgrade.
    This does not apply to all feature flags, however.

    GitHub project: #4.

    GitHub issues: #12466, #12444,
    #12447

  • properties and appliation-properties filters of AMQP Filter Expressions Version 1.0 Working Draft 09
    when consuming from a stream via AMQP 1.0. String prefix and suffix matching is also supported.

    This feature adds the ability to RabbitMQ to have multiple concurrent clients each consuming only a subset of messages while maintaining message order.
    It also reduces network traffic between RabbitMQ and clients by only dispatching those messages that the clients are actually interested in.

    GitHub issue: #12415

  • AMQP 1.0 connections that use OAuth 2.0 now can renew their JWT tokens
    This allows clients to set a new token proactively before the current one expires, ensuring uninterrupted connectivity.
    If a client does not set a new token before the existing one expires, RabbitMQ will automatically close the AMQP 1.0 connection.

    GitHub issue: #12599

  • Support for Multiple Routing Keys in AMQP 1.0 via x-cc Message Annotation.

    AMQP 1.0 publishers now can set multiple routing keys by using the x-cc message annotation.
    This annotation allows publishers to specify a list
    of routing keys (strings) for more flexible message distribution,
    similar to the CC header in AMQP 0.9.1.

    GitHub issue: #12559

MQTT Plugin

Enhancements

  • The default MQTT Maximum Packet Size changed from 256 MiB to 16 MiB.

    This default can be overridden by configuring mqtt.max_packet_size_authenticated.
    Note that this value must not be greater than max_message_size (which also defaults to 16 MiB).

Prometheus Plugin

Enhancements

  • RabbitMQ nodes now provide a Prometheus histogram for message sizes published by applications.

    This feature allows operators to gain insights into the message sizes being published to RabbitMQ,
    such as average message size, number of messages per pre-defined bucket (which can both be computed accurately), and percentiles (which will be approximated).
    Each metric is labelled by protocol (AMQP 1.0, AMQP 0.9.1, MQTT 5.0, MQTT 3.1.1, and MQTT 3.1).

    GitHub issue: #12342

Management UI

Enhancements

  • Connection pages now display detailed AMQP 1.0 session and link information:

    1. Link names
    2. Link target and source addresses
    3. Link flow control state
    4. Session flow control state
    5. Number of unconfirmed and unacknowledged messages

    GitHub issue: #12670

  • The management UI now shows if a feature flag has a migration function (in other words, it may take time to be enabled),
    if it is experimental and whether it is supported or not. To enable an experimental feature flag,
    a user must to tick checkboxes to confirm they know what they are doing.

    GitHub issue: #12643

  • Feature flags are now enabled using asynchronous requests in the management UI.
    This means that feature flags that perform data migrations (which can take some time)
    won't block the browser tab.

    GitHub issue: #12643

Event Exchange Plugin

Enhancements

  • The rabbitmq_event_exchange plugin now can be configured to internally publish AMQP 1.0 instead of AMQP 0.9.1 messages to the amq.rabbitmq.event topic exchange.

    This allows AMQP 1.0 consumers to receive event properties containing complex types such as lists
    or maps, for example queue arguments for the queue.created
    event or client provided properties for the connection.created event.

    GitHub issue: #12714

Dependency Changes

TBD

Source Code Archives

To obtain source code of the entire distribution, please download the archive named rabbitmq-server-4.1.0.tar.xz
instead of the source tarball produced by GitHub.