Skip to content

Releases: rabbitmq/rabbitmq-server

RabbitMQ 3.11.15

29 Apr 13:33
57058d2
Compare
Choose a tag to compare

RabbitMQ 3.11.15 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

Enhancements

RPM Package

Bug Fixes

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.15.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.10.22

29 Apr 16:08
cba9ba4
Compare
Choose a tag to compare

RabbitMQ 3.10.22 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.

RPM Package

Bug Fixes

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.22.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.11.14

27 Apr 22:03
55969f9
Compare
Choose a tag to compare

RabbitMQ 3.11.14 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.
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

Enhacements

  • 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

  • It is now possible to limit how many shovels or federation links can run on a node
    using rabbitmq.conf:

    runtime_parameters.limits.shovel = 10
    runtime_parameters.limits.federation = 10

    Contributed by @illotum (AWS).

    GitHub issue: #7917

  • Quorum queues will now log if they could not apply policy changes, for example,
    because there was no quorum of replicas online, or the queue was going through
    a leader election.

    GitHub issue: #7853

Bug Fixes

  • Superstream could fail
    to elect a single active consumer (SAC) in certain consumer churn conditions.

    GitHub issue: #7743

CLI Tools

Enhancements

  • rabbitmqctl update_vhost_metadata is a new command that can be used to update
    the description, default queue type, or tags of a virtual host:

    rabbitmqctl update_vhost_metadata vh1 --tags qa,quorum,team3,project2
    
    rabbitmqctl update_vhost_metadata vh1 --description "QA env 1 for issue 37483"
    
    rabbitmqctl update_vhost_metadata vh1 --description "QQs all the way" --default-queue-type "quorum"
    
    rabbitmqctl update_vhost_metadata vh1 --description "streaming my brain out" --default-queue-type "stream"

    GitHub issue: #7914

Management Plugin

Bug Fixes

  • It was impossible to return to a tab that had a filter expression
    that was not a valid regular expressions.

    Now such expressions will be used as regular text filters.

    GitHub issue: #8008

OAuth 2 AuthN/AuthZ Backend Plugin

Enhancement

  • Several variables ({username}, {vhost} and JWT claims that are single string values)
    now can be used (expanded) in topic operation authorization.

    GitHub issue: #7178

HTTPS AuthN/AuthZ Backend Plugin

Bug Fixes

  • The authorization backend could run into an exception when used in
    combination with other backends.

    GitHub issue: #7864

Dependency Upgrades

  • cowlib was upgraded to 2.12.1

Source Code Archives

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

RabbitMQ 3.10.21

27 Apr 23:49
72ff938
Compare
Choose a tag to compare

RabbitMQ 3.10.21 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 23 and 24 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.

Management Plugin

Bug Fixes

  • It was impossible to return to a tab that had a filter expression
    that was not a valid regular expressions.

    Now such expressions will be used as regular text filters.

    GitHub issue: #8008

HTTPS AuthN/AuthZ Backend Plugin

Bug Fixes

  • The authorization backend could run into an exception when used in
    combination with other backends.

    GitHub issue: #7864

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.21.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.12.0-rc.1

26 Apr 16:49
3b12cf0
Compare
Choose a tag to compare
RabbitMQ 3.12.0-rc.1 Pre-release
Pre-release

RabbitMQ 3.12.0-rc.1

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

Highlights

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

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

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.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

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

  • 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 shovels or federation links can run on a node
    using rabbitmq.conf:

    runtime_parameters.limits.shovel = 10
    runtime_parameters.limits.federation = 10

    Contributed by @illotum (AWS).

    GitHub issue: #7917

  • Quorum queues: The x-delivery-count header will no longer be added to messages the first time they are delivered (x-delivery-count=0)
    as it has a potential performance impact on consumer deliveries.

    GitHub issue: #7732

Bug Fixes

This release includes all bug fixes shipped in the 3.11.x series.

  • It is now possible to use at-most-once dead lettering with streams (dead letter
    messages to a stream).

    GitHub issue: #7846

  • It is now possible to use s...

Read more

RabbitMQ 3.12.0-beta.8

22 Apr 04:00
0d9c4df
Compare
Choose a tag to compare
Pre-release

RabbitMQ 3.12.0-beta.8

RabbitMQ 3.12.0-beta.8 is a preview of a new feature release.

Highlights

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

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

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.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

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

  • 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

  • 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 shovels or federation links can run on a node
    using rabbitmq.conf:

    runtime_parameters.limits.shovel = 10
    runtime_parameters.limits.federation = 10

    Contributed by @illotum (AWS).

    GitHub issue: #7917

  • Quorum queues: The x-delivery-count header will no longer be added to messages the first time they are delivered (x-delivery-count=0)
    as it has a potential performance impact on consumer deliveries.

    GitHub issue: #7732

Bug Fixes

This release includes all bug fixes shipped in the 3.11.x series.

  • It is now possible to use at-most-once dead lettering with streams (dead letter
    messages to a stream).

    GitHub issue: #7846

  • It is now possible to use streams in combination with the event exchange.

    GitHub issue: #7846

  • Superstream could fail
    to elect a single active consumer (SAC) ...

Read more

RabbitMQ 3.12.0-beta.6

05 Apr 22:41
673bfce
Compare
Choose a tag to compare
Pre-release

RabbitMQ 3.12.0-beta.6

RabbitMQ 3.12.0-beta.6 is a preview of a new feature release.

Highlights

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

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

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.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

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.

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 Erlang 26 compatibility

    GitHub issues: #7443

  • 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
  • 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

  • Quorum queues: The x-delivery-count header will no longer be added to messages the first time they are delivered (x-delivery-count=0)
    as it has a potential performance impact on consumer deliveries.

    GitHub issue: #7732

Bug Fixes

This release includes all bug fixes shipped in the 3.11.x series.

  • It is now possible to use at-most-once dead lettering with streams (dead letter
    messages to a stream).

    GitHub issue: #7846

  • Superstream could fail
    to elect a single active consumer (SAC) in certain consumer churn conditions.

    GitHub issue: #7743

  • Classic mirrored queues that had a length limit defined on them
    handled the overflow of messages differently from the current elected leader,
    eventually causing exceptions and replica restarts.

    GitHub issue: #7579

CLI Tools

Enhancements

  • rabbitmq-queues rebalance now supports streams in addition to classic and quorum queues.

    GitHub issue: #6440

  • rabbitmq-streams restart_stream is a new command that can be used to kick off
    a new leader election for a stream. This is another option that can be used
    to rebalance stream leaders across cluster nodes.

    GitHub issue: #6440

  • Classic queue metrics are now available via rabbitmq-diagnostics observer.

    GitHub issue: #3314

  • rabbitmqctl set_permissions_globally is a new command that sets up user permissions in all existing virtual hosts.

    GitHub issue: [#1000](https://github.com/rabbitmq/ra...

Read more

RabbitMQ 3.12.0-beta.5

02 Apr 10:14
Compare
Choose a tag to compare
Pre-release

RabbitMQ 3.12.0-beta.5

RabbitMQ 3.12.0-beta.5 is a preview of a new feature release.

Highlights

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

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

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.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith,
and PackageCloud.

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.

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 Erlang 26 compatibility

    GitHub issues: #7443

  • 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
  • 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

  • Quorum queues: The x-delivery-count header will no longer be added to messages the first time they are delivered (x-delivery-count=0)
    as it has a potential performance impact on consumer deliveries.

    GitHub issue: #7732

Bug Fixes

This release includes all bug fixes shipped in the 3.11.x series.

  • Classic mirrored queues that had a length limit defined on them
    handled the overflow of messages differently from the current elected leader,
    eventually causing exceptions and replica restarts.

    GitHub issue: #7579

CLI Tools

Enhancements

  • rabbitmq-queues rebalance now supports streams in addition to classic and quorum queues.

    GitHub issue: #6440

  • rabbitmq-streams restart_stream is a new command that can be used to kick off
    a new leader election for a stream. This is another option that can be used
    to rebalance stream leaders across cluster nodes.

    GitHub issue: #6440

  • Classic queue metrics are now available via rabbitmq-diagnostics observer.

    GitHub issue: #3314

  • rabbitmqctl set_permissions_globally is a new command that sets up user permissions in all existing virtual hosts.

    GitHub issue: #1000

  • rabbitmq-diagnostics cluster_status now lists how many CPU cores are available to individual nodes, plus a total.

    GitHub issue: #7135

MQTT Plugin

Enhancements

Read more

RabbitMQ 3.11.13

31 Mar 22:52
Compare
Choose a tag to compare

RabbitMQ 3.11.13 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.
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

  • 3.11.12 introduced a regression that caused client connections to fail with an exception
    when TCP or TLS listeners were bound to a particular interface.

    GitHub issue: #7788

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.13.tar.xz
instead of the source tarball produced by GitHub.

RabbitMQ 3.11.12

30 Mar 23:52
Compare
Choose a tag to compare

RabbitMQ 3.11.12 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.
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

  • Boot time import of definitions from a conf.d-style directory failed unless
    definitions.skip_if_unchanged was set to true, for example, like in this
    rabbitmq.conf:

    definitions.skip_if_unchanged = false
    definitions.import_backend = local_filesystem
    definitions.local.path = /path/to/RabbitMQ/definitions/conf.d/

    GitHub issue: #7705

  • Improved resiliency of dead-lettering.

    GitHib issue: #7677

Enhancements

  • When the maximum allowed number of connections to the node was limited using the connection_max key
    and the limit was reached, newly connecting client previously would run into a TCP connection timeout.

    Now a more specific error will be returned to the client before connection closure.

    Contributed by @SimonUnge (AWS).

    GitHub issue: #7593

CLI Tools

Bug Fixes

  • rabbitmqctl add_vhosts failed with an exception when --default-queue-type option was provided.

    GitHub issue: #7750

Management Plugin

Bug Fixes

  • HTTP API endpoint PUT /api/vhosts/{name} incorrectly used defaultqueuetype for default queue type
    key name. It is now default_queue_type, the same key as returned by GET /api/vhosts/{name}.

    GitHub issue: #7734

  • HTTP API will now respond with a 405 Method Not Allowed instead of a 500 when
    an unsupported method is used by the client.

    Contributed by @gomoripeti (CloudAMQP).

    GitHub issue: #7675

AMQP 1.0 Plugin

Bug Fixes

  • Fixed AMQP 1.0 authentication issue that affected OAuth 2 token users.

    GitHub issue: #7758

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.12.tar.xz
instead of the source tarball produced by GitHub.