Skip to content

Releases: rabbitmq/rabbitmq-server

RabbitMQ 3.11.19

26 Jun 10:34
587420f
Compare
Choose a tag to compare

RabbitMQ 3.11.19 is a maintenance release in the 3.11.x release series.

Please refer to the upgrade section from v3.11.0 release notes
if upgrading from a version prior to 3.11.0.

This release requires Erlang 25 and supports Erlang versions up to 25.3.x.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

As of 3.11.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Server

Bug Fixes

  • Declaration of a classic queue could run into an exception.

    GitHub issue: #8629

  • Nodes that had a large number of quorum queues could observe accumulation of Erlang processes
    under significant load. A follow-up change to #7389.

    GitHub issue: #8591

  • Feature flag discovery operations will now be retried multiple times in case of network failures.

    GitHub issue: #8491

  • Feature flag discovery on a newly added node could discover an incomplete inventory of feature flags.

    GitHub issue: #8487

  • Nodes in clusters that had quorum queues and non-mirrored classic queues on stopped (or failed) nodes
    could run into an exception.

    The same exception could affect rabbitmqctl list_queues.

    GitHub issue: #8596

  • Proxy Protocol v2 LOCAL packets were not supported.

    GitHub issue: #8668

Enhancements

  • When a quorum queue does not find its local replica data files on boot, it will now log
    a warning.

    GitHub issue: #8630

Management Plugin

Bug Fixes

  • An attempt to clear limits of a non-existent virtual host failed with a 500 status code.

    GitHub issue: #8523

Enhacements

  • Management UI will now display node maintenance status.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #8558

  • The "Queues" tab in the UI was renamed to "Queue and Streams" to better reflect
    its contents.

    GitHub issue: #8520

  • New HTTP API endpoints for quorum queue replica management, equivalent to
    the rabbitmq-queues commands that manage replicas.

    POST /api/queues/quorum/{vhost}/{name}/replicas/add
    DELETE /api/queues/quorum/{vhost}/{name}/replicas/remove
    POST /api/queues/quorum/replicas/on/{node}/grow
    DELETE /api/queues/quorum/replicas/on/{node}/shrink
    

    GitHub issue: #8561

Stream Plugin

Bug Fixes

  • Stream client connections that authenticated using x.509 certificates
    failed.

    GitHub issue: #8488

OAuth 2 Plugin

Bug Fixes

  • Only set OAuth 2 client's CA certificate file setting when it is defined.

    GitHub issue: #8548

Enhancements

  • The plugin will now accept JWT tokens without a scope. Such tokens would only be useful when the plugin
    is used exclusively for authentication and not authorization.

    GitHub issue: #8391

  • oauth2 is now an accepted alias for the OAuth 2 authentication and authorization backend:

    auth_backends.1 = oauth2
    

    Previously the only option for OAuth 2 was using a full module name,
    rabbit_auth_backend_oauth2.

    GitHub issue: #8513

STOMP Plugin

Bug Fixes

  • STOMP plugin log entries had an extra line feed character.

    GitHub issue: #2568

Dependency Upgrades

  • ra was upgraded to 2.6.2

Source Code Archives

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

RabbitMQ 3.11.18

05 Jun 17:28
bcb95c9
Compare
Choose a tag to compare

RabbitMQ 3.11.18 is a maintenance release in the 3.11.x release series.

Please refer to the upgrade section from v3.11.0 release notes
if upgrading from a version prior to 3.11.0.

This release requires Erlang 25 and supports Erlang versions up to 25.3.x.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

As of 3.11.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Server

Bug Fixes

  • Classic queues v1 (CQv1) that had a backlog of messages stored by 3.9 and earlier versions
    could run into an exception during queue index recovery after an upgrade to 3.10.x or any later series.

    CQv2 and queues without a backlog were not affected.

    Contributed by @gomoripeti (CloudAMQP).

    GitHub issue: #8458

  • rabbitmq-upgrade drain failed with an exception in environments where management plugin (HTTP API)
    plugin listener was bound to a specific interface.

    GitHub issue: #8440

OAuth 2 Plugin

Enhancements

  • The plugin will now accept JWT tokens without a scope. Such tokens would only be useful when the plugin
    is used exclusively for authentication and not authorization.

    GitHub issue: #8391

Dependency Upgrades

None in this release.

Source Code Archives

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

RabbitMQ 3.10.24

05 Jun 17:27
3c2a999
Compare
Choose a tag to compare

RabbitMQ 3.10.24 is a maintenance release in the 3.10.x release series.

This series reaches its end of community support on July 31st, 2023.

Please refer to the upgrade section from v3.10.0 release notes
if upgrading from a version prior to 3.10.0.

This release requires Erlang 24.3 and supports Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

Erlang versions older than 24.3 have reached end of support.

This release of RabbitMQ requires Erlang 24.3.4.8
or later versions. Nodes will fail to start on older Erlang releases.

Erlang 25.3 is recommended: it offers much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Server

Bug Fixes

  • Classic queues v1 (CQv1) that had a backlog of messages stored by 3.9 and earlier versions
    could run into an exception during queue index recovery after an upgrade to 3.10.x or any later series.

    CQv2 and queues without a backlog were not affected.

    Contributed by @gomoripeti (CloudAMQP).

    GitHub issue: #8458

Dependency Upgrades

None in this release.

Source Code Archives

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

RabbitMQ 3.12.0

01 Jun 23:39
ca45434
Compare
Choose a tag to compare

RabbitMQ 3.12.0 is a new feature release.

This release goes out of community support on June 1st, 2024.

Important

RabbitMQ 3.12.0 requires all feature flags from the 3.11.x release series to be enabled before upgrading.
Make sure all feature flags are enabled before attempting an upgrade!

Highlights

This release includes several new features, optimizations, and graduates (makes mandatory) a number of feature flags.

The user-facing areas that have seen the biggest improvements in this release are

  • Optimizations for both quorum and classic queues: improved throughput, lower throughput variability, lower latency, lower memory footprint
  • More mature and efficient implementation of (non-mirrored) classic queues v2 (CQv2)
  • Classic queue lazy and non-lazy modes no longer apply: classic queues v2 always behave very similarly
    to the lazy mode in earlier release series: moving data to disk aggressively and only keeping a subset of data in memory
  • Significantly reduced MQTT and Web MQTT memory footprint per connection
  • OAuth 2, OIDC, IDP support
  • Even more configurability of the OAuth 2 plugin

This release also features many internal API improvements in preparation to 4.0
with Khepri.

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

Release Artifacts

RabbitMQ releases are distributed via GitHub.
Debian and RPM packages are available via Cloudsmith mirrors, as well as PackageCloud.

Community Docker image, Chocolatey package, and the Homebrew formula
are other installation options. They are updated with a delay (usually a few days).

Erlang/OTP Compatibility Notes

This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.

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

Erlang 26

This is the first release that offers Erlang 26 compatibility. Note that Erlang 26 is very new and
is nowhere near as battle tested as Erlang 25.

Upgrading to 3.12

Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.

Required Feature Flags

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Upgrading to Erlang 26 and RabbitMQ 3.12 at the Same Time

When upgrading from 3.11.x on Erlang 25 to 3.12.x on Erlang 26,
the cluster must be on at least version 3.11.17 for a safe upgrade of quorum queues.

Alternatively, it is possible to upgrade all nodes to 3.12.0 on Erlang 25 from an earlier
3.11.x version, then upgrade the 3.12 cluster to Erlang 26.

Mixed version cluster compatibility

RabbitMQ 3.12.0 nodes can run alongside 3.11.x nodes starting with 3.11.17.

3.12.x-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other 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 is covered below.
Once all nodes are upgraded to 3.12.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).

Compatibility Notes

More Feature Flags Gratuate to Core Features ("Always Enabled")

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Minimum Supported Erlang Version

Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.11.x will be compatible with 3.12.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.

Changes Worth Mentioning

Release notes are kept under rabbitmq-server/release-notes.

Core Server

Enhancements

  • Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
    on average, and in particular when Single Active Consumer is used.

    GitHub issue: #7553

  • Reduced memory footprint, improved memory use predictability and throughput of classic queues.
    This particularly benefits classic queues with longer backlogs.

    GitHub issues: #4522, #7516

  • Reduced peak memory footprint of quorum queues.

    GitHub issue: #7175

  • Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
    streams.

    GitHub issue: #6440

  • All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
    all feature flags are enabled before upgrading to 3.12.0.

    GitHub issue: #7219

  • Plugin and core API: all schema data store operations are now available via the rabbit_db_* modules.
    Plugin maintainers should switch to them for an easier transition to a future 4.0 release.

    GitHub issues: #6430, #6821

  • Plugin and core API: node data directory now should be accessed using rabbit:data_dir/0.

    GitHub issue: #6462

  • Initial (incomplete) Erlang 26 compatibility

    GitHub issues: #7443, #7900,
    #7921, #8057

  • There is now a way to pre-configure users and their permissions for newly created virtual hosts:

    default_users.qa_user.vhost_pattern = qa.*
    default_users.qa_user.tags = policymaker,monitoring
    default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
    default_users.qa_user.read = .*
    default_users.qa_user.write = .*
    default_users.qa_user.configure = .*

    This is primarily useful in environments where RabbitMQ is provided as a service but
    customers (clients) have control over virtual hosts.

    Contributed by @illotum (AWS).

    GitHub issue: #7208.

  • Policies can now be defined to only apply to specific queue types.

    For example, it is now possible to have two policies matching all queue names ('.*')
    but one applicable only to one queue type, and the other only to different queue type,
    without conflicts.

    For example, this policy will only apply to quorum queues and not streams or classic queues:

    rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
  • Nodes with a lot of classic queues now shut down up to 10 times faster.

    GitHub issue: #7745

  • Reduced metric collection-induced memory use spikes every two minutes in environments with
    a lot of mostly idle queues.

    GitHub issues: #7825, #7896

  • [Delivery ackno...

Read more

RabbitMQ 3.12.0-rc.4

30 May 09:55
Compare
Choose a tag to compare
RabbitMQ 3.12.0-rc.4 Pre-release
Pre-release

RabbitMQ 3.12.0-rc.4

RabbitMQ 3.12.0-rc.4 is a candidate of a new feature release.

Highlights

This release includes several new features, optimizations, and graduates (makes mandatory) a number of feature flags.

The user-facing areas that have seen the biggest improvements in this release are

  • Optimizations for both quorum and classic queues: improved throughput, lower throughput variability, lower latency, lower memory footprint
  • More mature and efficient implementation of (non-mirrored) classic queues v2 (CQv2)
  • Classic queue lazy and non-lazy modes no longer apply: classic queues v2 always behave very similarly
    to the lazy mode in earlier release series: moving data to disk aggressively and only keeping a subset of data in memory
  • Significantly reduced MQTT and Web MQTT memory footprint per connection
  • OAuth 2, OIDC, IDP support
  • Even more configurability of the OAuth 2 plugin

This release also features many internal API improvements in preparation to 4.0
with Khepri.

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

Release Artifacts

RabbitMQ releases are distributed via GitHub.
Debian and RPM packages are available via Cloudsmith mirrors, as well as PackageCloud.

Community Docker image, Chocolatey package, and the Homebrew formula
are other installation options. They are updated with a delay (usually a few days).

Erlang/OTP Compatibility Notes

This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.

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

Erlang 26

Erlang 26 introduces a number of breaking changes around networking and TLS. At the moment,
RabbitMQ should not be considered fully compatible with Erlang 26. Erlang 26 compatibility
will be announced separately.

Upgrading to 3.12

Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.

Required Feature Flags

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Mixed version cluster compatibility

RabbitMQ 3.12.0 nodes can run alongside 3.11.x nodes. 3.12.x-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other 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 is covered below.
Once all nodes are upgraded to 3.12.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).

Compatibility Notes

More Feature Flags Gratuate to Core Features ("Always Enabled")

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Minimum Supported Erlang Version

Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.11.x will be compatible with 3.12.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.

Changes Worth Mentioning

Release notes are kept under rabbitmq-server/release-notes.

Core Server

Enhancements

  • Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
    on average, and in particular when Single Active Consumer is used.

    GitHub issue: #7553

  • Reduced memory footprint, improved memory use predictability and throughput of classic queues.
    This particularly benefits classic queues with longer backlogs.

    GitHub issues: #4522, #7516

  • Reduced peak memory footprint of quorum queues.

    GitHub issue: #7175

  • Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
    streams.

    GitHub issue: #6440

  • All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
    all feature flags are enabled before upgrading to 3.12.0.

    GitHub issue: #7219

  • Plugin and core API: all schema data store operations are now available via the rabbit_db_* modules.
    Plugin maintainers should switch to them for an easier transition to a future 4.0 release.

    GitHub issues: #6430, #6821

  • Plugin and core API: node data directory now should be accessed using rabbit:data_dir/0.

    GitHub issue: #6462

  • Initial (incomplete) Erlang 26 compatibility

    GitHub issues: #7443, #7900,
    #7921, #8057

  • There is now a way to pre-configure users and their permissions for newly created virtual hosts:

default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*

This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.

Contributed by @illotum (AWS).

GitHub issue: #7208.

  • Policies can now be defined to only apply to specific queue types.

    For example, it is now possible to have two policies matching all queue names ('.*')
    but one applicable only to one queue type, and the other only to different queue type,
    without conflicts.

    For example, this policy will only apply to quorum queues and not streams or classic queues:

    rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
  • Nodes with a lot of classic queues now shut down up to 10 times faster.

    GitHub issue: #7745

  • Reduced metric collection-induced memory use spikes every two minutes in environments with
    a lot of mostly idle queues.

    GitHub issues: #7825, #7896

  • Delivery acknowledgement timeout now can be configured per queue (using a policy)
    or per consumer (using optional consumer arguments).

    GitHub issue: #5437

  • It is now possible to limit the maximum number of virtual hosts that can be created
    in the cluster.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #7777

  • Nodes with a lot of (non-mirrored) classic queues with v2 storage enabled
    by default (using classic_queue.default_version = 2) now boot faster.

    GitHub issue: #7676

  • It is now possible to limit how many shovel...

Read more

RabbitMQ 3.11.17

29 May 22:18
9711e01
Compare
Choose a tag to compare

RabbitMQ 3.11.17 is a maintenance release in the 3.11.x release series.

Please refer to the upgrade section from v3.11.0 release notes
if upgrading from a version prior to 3.11.0.

This release requires Erlang 25 and supports Erlang versions up to 25.3.x.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

As of 3.11.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Server

Bug Fixes

  • Fixed two quorum queue federation issues.

    GitHub issue: #8282

  • Nodes that had a large number of quorum queues could observe accumulation of Erlang processes
    under significant load.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #7389

  • Nodes could hang when recovering classic queue indices during boot.

    GitHub issue: #8343

  • As of #6418, nodes refuse
    to start if the definitions file cannot be parsed as valid JSON.

    Now this also applies to nodes that were configure to skip definition import if the input file(s) has changed
    using the definitions.skip_if_unchanged setting.

    GitHub issue: #8372

Enhancements

  • Reduce CPU footprint of quorum queue metric emission in clusters with a lot of quorum queues.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #7389

Management Plugin

Bug Fixes

Enhancements

  • It is now possible to change default queue type for a virtual host using the
    PUT /api/vhosts/{name} endpoint.

    GitHub issue: #8342

Web STOMP Plugin

Bug Fixes

  • The plugin reported the interface its listener(s) were bound to incorrectly.

    GitHub issue: #8242

Web MQTT Plugin

Bug Fixes

  • The plugin reported the interface its listener(s) were bound to incorrectly.

    GitHub issue: #8242

Debian Package

Bug Fixes

  • Make-based source package builds were failing in an offline environment.

    GitHub issue: #7869

RPM Package

Bug Fixes

  • Make-based source package builds were failing in an offline environment.

    GitHub issue: #7869

Dependency Upgrades

  • CSV parser used by CLI tools was upgraded to 3.0.5

Source Code Archives

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

RabbitMQ 3.10.23

24 May 09:50
b0b3177
Compare
Choose a tag to compare

RabbitMQ 3.10.23 is a maintenance release in the 3.10.x release series.

This series reaches its end of community support on July 31st, 2023.

Please refer to the upgrade section from v3.10.0 release notes
if upgrading from a version prior to 3.10.0.

This release requires Erlang 24.3 and supports Erlang 25.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

Erlang versions older than 24.3 have reached end of support.

This release of RabbitMQ requires Erlang 24.3.4.8
or later versions. Nodes will fail to start on older Erlang releases.

Erlang 25.3 is recommended: it offers much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Debian Package

Bug Fixes

  • Make-based source package builds were failing in an offline environment.

    GitHub issue: #7869

RPM Package

Bug Fixes

  • Make-based source package builds were failing in an offline environment.

    GitHub issue: #7869

Federation Plugin

Bug Fixes

  • URI parser incorrectly used the password query parameter to override the password
    value in authority (user info) part.

    The password query parameter can be used to specify private key password for
    upstream connections that use TLS.

    GitHub issue: #8129

Shovel Plugin

Bug Fixes

  • URI parser incorrectly used the password query parameter to override the password
    value in authority (user info) part.

    The password query parameter can be used to specify private key password for Shovels
    that use TLS.

    GitHub issue: #8129

Dependency Upgrades

None in this release.

Source Code Archives

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

RabbitMQ 3.12.0-rc.3

20 May 05:43
fb55f4b
Compare
Choose a tag to compare
RabbitMQ 3.12.0-rc.3 Pre-release
Pre-release

RabbitMQ 3.12.0-rc.3

RabbitMQ 3.12.0-rc.3 is a candidate of a new feature release.

Highlights

This release includes several new features, optimizations, and graduates (makes mandatory) a number of feature flags.

The user-facing areas that have seen the biggest improvements in this release are

  • Optimizations for both quorum and classic queues: improved throughput, lower throughput variability, lower latency, lower memory footprint
  • More mature and efficient implementation of (non-mirrored) classic queues v2 (CQv2)
  • Classic queue lazy and non-lazy modes no longer apply: classic queues v2 always behave very similarly
    to the lazy mode in earlier release series: moving data to disk aggressively and only keeping a subset of data in memory
  • Significantly reduced MQTT and Web MQTT memory footprint per connection
  • OAuth 2, OIDC, IDP support
  • Even more configurability of the OAuth 2 plugin

This release also features many internal API improvements in preparation to 4.0
with Khepri.

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

Release Artifacts

RabbitMQ releases are distributed via GitHub.
Debian and RPM packages are available via Cloudsmith mirrors, as well as PackageCloud.

Community Docker image, Chocolatey package, and the Homebrew formula
are other installation options. They are updated with a delay (usually a few days).

Erlang/OTP Compatibility Notes

This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.

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

Erlang 26

Erlang 26 introduces a number of breaking changes around networking and TLS. At the moment,
RabbitMQ should not be considered fully compatible with Erlang 26. Erlang 26 compatibility
will be announced separately.

Upgrading to 3.12

Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.

Required Feature Flags

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Mixed version cluster compatibility

RabbitMQ 3.12.0 nodes can run alongside 3.11.x nodes. 3.12.x-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other 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 is covered below.
Once all nodes are upgraded to 3.12.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).

Compatibility Notes

More Feature Flags Gratuate to Core Features ("Always Enabled")

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Minimum Supported Erlang Version

Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.11.x will be compatible with 3.12.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.

Changes Worth Mentioning

Release notes are kept under rabbitmq-server/release-notes.

Core Server

Enhancements

  • Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
    on average, and in particular when Single Active Consumer is used.

    GitHub issue: #7553

  • Reduced memory footprint, improved memory use predictability and throughput of classic queues.
    This particularly benefits classic queues with longer backlogs.

    GitHub issues: #4522, #7516

  • Reduced peak memory footprint of quorum queues.

    GitHub issue: #7175

  • Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
    streams.

    GitHub issue: #6440

  • All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
    all feature flags are enabled before upgrading to 3.12.0.

    GitHub issue: #7219

  • Plugin and core API: all schema data store operations are now available via the rabbit_db_* modules.
    Plugin maintainers should switch to them for an easier transition to a future 4.0 release.

    GitHub issues: #6430, #6821

  • Plugin and core API: node data directory now should be accessed using rabbit:data_dir/0.

    GitHub issue: #6462

  • Initial (incomplete) Erlang 26 compatibility

    GitHub issues: #7443, #7900,
    #7921, #8057

  • There is now a way to pre-configure users and their permissions for newly created virtual hosts:

default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*

This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.

Contributed by @illotum (AWS).

GitHub issue: #7208.

  • Policies can now be defined to only apply to specific queue types.

    For example, it is now possible to have two policies matching all queue names ('.*')
    but one applicable only to one queue type, and the other only to different queue type,
    without conflicts.

    For example, this policy will only apply to quorum queues and not streams or classic queues:

    rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
  • Nodes with a lot of classic queues now shut down up to 10 times faster.

    GitHub issue: #7745

  • Reduced metric collection-induced memory use spikes every two minutes in environments with
    a lot of mostly idle queues.

    GitHub issues: #7825, #7896

  • Delivery acknowledgement timeout now can be configured per queue (using a policy)
    or per consumer (using optional consumer arguments).

    GitHub issue: #5437

  • It is now possible to limit the maximum number of virtual hosts that can be created
    in the cluster.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #7777

  • Nodes with a lot of (non-mirrored) classic queues with v2 storage enabled
    by default (using classic_queue.default_version = 2) now boot faster.

    GitHub issue: #7676

  • It is now possible to limit how many shovel...

Read more

RabbitMQ 3.12.0-rc.2

13 May 09:44
e611310
Compare
Choose a tag to compare
RabbitMQ 3.12.0-rc.2 Pre-release
Pre-release

RabbitMQ 3.12.0-rc.2

RabbitMQ 3.12.0-rc.2 is a candidate of a new feature release.

Highlights

This release includes several new features, optimizations, and graduates (makes mandatory) a number of feature flags.

The user-facing areas that have seen the biggest improvements in this release are

  • Optimizations for both quorum and classic queues: improved throughput, lower throughput variability, lower latency, lower memory footprint
  • More mature and efficient implementation of (non-mirrored) classic queues v2 (CQv2)
  • Classic queue lazy and non-lazy modes no longer apply: classic queues v2 always behave very similarly
    to the lazy mode in earlier release series: moving data to disk aggressively and only keeping a subset of data in memory
  • Significantly reduced MQTT and Web MQTT memory footprint per connection
  • OAuth 2, OIDC, IDP support
  • Even more configurability of the OAuth 2 plugin

This release also features many internal API improvements in preparation to 4.0
with Khepri.

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

Release Artifacts

RabbitMQ releases are distributed via GitHub.
Debian and RPM packages are available via Cloudsmith mirrors, as well as PackageCloud.

Community Docker image, Chocolatey package, and the Homebrew formula
are other installation options. They are updated with a delay (usually a few days).

Erlang/OTP Compatibility Notes

This release requires Erlang 25.0 or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
modern Flame Graph profiling tooling
for both of those major CPU architectures.

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

Erlang 26

Erlang 26 introduces a number of breaking changes around networking and TLS. At the moment,
RabbitMQ should not be considered fully compatible with Erlang 26. Erlang 26 compatibility
will be announced separately.

Upgrading to 3.12

Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and RabbitMQ change log
for release notes of other releases.

Required Feature Flags

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading,
similarly to how 3.11.0 required all feature flags introduced before 3.9.0.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Mixed version cluster compatibility

RabbitMQ 3.12.0 nodes can run alongside 3.11.x nodes. 3.12.x-specific features can only be made available when all nodes in the cluster
upgrade to 3.12.0 or any other 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 is covered below.
Once all nodes are upgraded to 3.12.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).

Compatibility Notes

More Feature Flags Gratuate to Core Features ("Always Enabled")

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Minimum Supported Erlang Version

Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start
on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.11.x will be compatible with 3.12.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.

Changes Worth Mentioning

Release notes are kept under rabbitmq-server/release-notes.

Core Server

Enhancements

  • Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput
    on average, and in particular when Single Active Consumer is used.

    GitHub issue: #7553

  • Reduced memory footprint, improved memory use predictability and throughput of classic queues.
    This particularly benefits classic queues with longer backlogs.

    GitHub issues: #4522, #7516

  • Reduced peak memory footprint of quorum queues.

    GitHub issue: #7175

  • Improved stream leader distribution efficiency. Mostly relevant to environments with lots of
    streams.

    GitHub issue: #6440

  • All feature flags introduced before 3.11.0 are now required to be enabled. Make sure
    all feature flags are enabled before upgrading to 3.12.0.

    GitHub issue: #7219

  • Plugin and core API: all schema data store operations are now available via the rabbit_db_* modules.
    Plugin maintainers should switch to them for an easier transition to a future 4.0 release.

    GitHub issues: #6430, #6821

  • Plugin and core API: node data directory now should be accessed using rabbit:data_dir/0.

    GitHub issue: #6462

  • Initial (incomplete) Erlang 26 compatibility

    GitHub issues: #7443, #7900,
    #7921, #8057

  • There is now a way to pre-configure users and their permissions for newly created virtual hosts:

default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*

This is primarily useful in environments where RabbitMQ is provided as a service but
customers (clients) have control over virtual hosts.

Contributed by @illotum (AWS).

GitHub issue: #7208.

  • Policies can now be defined to only apply to specific queue types.

    For example, it is now possible to have two policies matching all queue names ('.*')
    but one applicable only to one queue type, and the other only to different queue type,
    without conflicts.

    For example, this policy will only apply to quorum queues and not streams or classic queues:

    rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
  • Nodes with a lot of classic queues now shut down up to 10 times faster.

    GitHub issue: #7745

  • Reduced metric collection-induced memory use spikes every two minutes in environments with
    a lot of mostly idle queues.

    GitHub issues: #7825, #7896

  • Delivery acknowledgement timeout now can be configured per queue (using a policy)
    or per consumer (using optional consumer arguments).

    GitHub issue: #5437

  • It is now possible to limit the maximum number of virtual hosts that can be created
    in the cluster.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #7777

  • Nodes with a lot of (non-mirrored) classic queues with v2 storage enabled
    by default (using classic_queue.default_version = 2) now boot faster.

    GitHub issue: #7676

  • It is now possible to limit how many shovel...

Read more

RabbitMQ 3.11.16

13 May 12:32
06e9b32
Compare
Choose a tag to compare

RabbitMQ 3.11.16 is a maintenance release in the 3.11.x release series.

Please refer to the upgrade section from v3.11.0 release notes
if upgrading from a version prior to 3.11.0.

This release requires Erlang 25 and supports Erlang versions up to 25.3.x.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Minimum Supported Erlang Version

As of 3.11.0, RabbitMQ requires Erlang 25. Nodes will fail to start on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Server

Bug Fixes

Enhancements

  • A new boolean setting, quorum_queue.property_equivalence.relaxed_checks_on_redeclaration,
    makes it possible to relax queue property equivalence checks
    for quorum queues. Specifically, when a quorum queue is redeclared and the client-provided
    type is set to "classic", this setting will help avoid a channel exception, making it
    easier to migrate to quorum queues step by step, without upgrading all applications in a short
    period of time.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #8076

CLI Tools

Enhancements

  • rabbitmq-queues grow and rabbitmq-queues add_member now verify cluster membership of the node
    new quorum queue replicas should be placed on.

    GitHub issue: #8007

Federation Plugin

Bug Fixes

  • URI parser incorrectly used the password query parameter to override the password
    value in authority (user info) part.

    The password query parameter can be used to specify private key password for
    upstream connections that use TLS.

    GitHub issue: #8129

Shovel Plugin

Bug Fixes

  • URI parser incorrectly used the password query parameter to override the password
    value in authority (user info) part.

    The password query parameter can be used to specify private key password for Shovels
    that use TLS.

    GitHub issue: #8129

Dependency Upgrades

Source Code Archives

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