2022-09-26 20:15:10 +08:00
## RabbitMQ 3.11.0
2022-09-04 08:59:11 +08:00
2022-09-26 20:15:10 +08:00
RabbitMQ 3.11 is a new feature release.
2022-09-04 08:59:11 +08:00
2024-05-02 01:49:43 +08:00
This release series [is no longer covered by community support ](https://www.rabbitmq.com/release-information ).
2022-08-29 01:42:59 +08:00
## Highlights
2023-03-06 14:56:38 +08:00
This release includes several new features and optimizations, graduates (makes mandatory) a number of feature flags,
2022-09-02 16:07:17 +08:00
bumps minimum required version to Erlang 25 for ARM64 CPU feature parity.
2022-08-29 01:42:59 +08:00
2022-09-02 16:07:17 +08:00
The areas that have seen the biggest improvements in this release are
* Streams and the RabbitMQ stream protocol
* OAuth 2 support
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
2022-08-29 01:42:59 +08:00
## Obtaining Packages
2022-09-02 16:07:17 +08:00
RabbitMQ releases are distributed via [GitHub ](https://github.com/rabbitmq/rabbitmq-server/releases ), [Cloudsmith ](https://cloudsmith.io/~rabbitmq/repos/ ),
and [PackageCloud ](https://packagecloud.io/rabbitmq ).
2022-08-29 01:42:59 +08:00
### Erlang/OTP Compatibility Notes
2022-09-02 16:07:17 +08:00
This release [requires Erlang 25.0 ](https://www.rabbitmq.com/which-erlang.html ) or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
[modern Flame Graph profiling ](https://blog.rabbitmq.com/posts/2022/05/flame-graphs/ ) tooling
for both of those major CPU architectures.
2022-08-29 01:42:59 +08:00
2022-09-02 16:07:17 +08:00
[Provisioning Latest Erlang Releases ](https://www.rabbitmq.com/which-erlang.html#erlang-repositories ) explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
2022-08-29 01:42:59 +08:00
## Upgrading to 3.11
### Documentation guides on upgrades
See the [Upgrading guide ](https://www.rabbitmq.com/upgrade.html ) for documentation on upgrades and [RabbitMQ change log ](https://www.rabbitmq.com/changelog.html )
for release notes of other releases.
### Required
RabbitMQ 3.11.0 [will require all feature flags introduced in RabbitMQ 3.8 to be enabled ](https://blog.rabbitmq.com/posts/2022/07/required-feature-flags-in-rabbitmq-3.11/ )
before upgrading. If that is not the case, the upgrade process will not proceed.
### Mixed version cluster compatibility
RabbitMQ 3.11.0 nodes can run alongside `3.10.x` nodes. `3.11.x` -specific features can only be made available when all nodes in the cluster
upgrade to 3.11.0 or any other patch release in the 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.
2022-09-02 23:39:26 +08:00
Once all nodes are upgraded to 3.11.0, these irregularities will go away.
2022-08-29 01:42:59 +08:00
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
2022-09-02 16:07:17 +08:00
### Several Feature Flags Gratuate to Core Features ("Always Enabled")
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
RabbitMQ 3.11.0 will [require all feature flags from the 3.8.x release series to be enabled ](https://blog.rabbitmq.com/posts/2022/07/required-feature-flags-in-rabbitmq-3.11/ ) before upgrading.
If the feature flags are not enabled, RabbitMQ 3.11 and later nodes will refuse to start.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
### Minimum Supported Erlang Version
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes **will fail to start**
on older Erlang releases.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, [profiling with flame graphs ](https://blog.rabbitmq.com/posts/2022/05/flame-graphs/ )
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
2022-08-29 01:42:59 +08:00
2022-09-02 16:07:17 +08:00
### Open File Handle Limit is Capped by Default on Linux, *BSD, macOS
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
Nodes now default to 65536 concurrent client connections instead of using the effective kernel open file handle limit.
2022-09-02 16:07:17 +08:00
Users who want to override this default, that is, have nodes that should support more concurrent connections and open files,
now have to perform an additional configuration step:
2022-08-29 01:42:59 +08:00
2022-09-02 16:07:17 +08:00
* Pick a new limit value they would like to use, for instance, 100K
* Set the maximum open file handle limit (for example, via `systemd` or similar tooling) for the OS user used by RabbitMQ to 100K
* Set the [`ERL_MAX_PORTS` environment variable ](https://www.rabbitmq.com/configure.html#customise-environment ) to 100K
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
This change was introduced because of a change in several Linux distributions: they now use a default open file handle limit so high,
they cause a significant (say, 1.5 GiB) memory preallocated the Erlang runtime.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
For example, [RHEL 9 and CentOS Stream 9 ](https://access.redhat.com/solutions/1479623 ) are examples of such distributions.
The new default [comes from modern systemd ](https://github.com/systemd/systemd/commit/a8b627aaed409a15260c25988970c795bf963812 ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
See [rabbitmq/rabbitmq-server#5684 ](https://github.com/rabbitmq/rabbitmq-server/pull/5684 ) and [docker-library/rabbitmq#545 ](https://github.com/docker-library/rabbitmq/issues/545#issuecomment-1224977154 )
for details.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
### Client Library Compatibility
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
Client libraries that were compatible with RabbitMQ `3.10.x` will be compatible with `3.11.0` .
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
### Getting Help
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
Any questions about this release, upgrades or RabbitMQ in general are welcome on the [RabbitMQ mailing list ](https://groups.google.com/forum/#!forum/rabbitmq-users ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
## Changes Worth Mentioning
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
Release notes are kept under [rabbitmq-server/release-notes ](https://github.com/rabbitmq/rabbitmq-server/tree/v3.11.x/release-notes ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
### Core Server
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
#### Enhancements
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* Some features flags have [graduated to always enabled ](https://blog.rabbitmq.com/posts/2022/07/required-feature-flags-in-rabbitmq-3.11/ ).
This means that they must be enabled before upgrading to 3.11. If that is not the case, the upgrade process will not proceed.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* More efficient connection tracking. This means less CPU load in environments where high [connection churn ](https://www.rabbitmq.com/connections.html#high-connection-churn )
cannot be avoided.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
In part contributed by @gomoripeti .
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5610 ](https://github.com/rabbitmq/rabbitmq-server/pull/5610 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* 10% to 20% throughput gain for publishers that use the default exchange.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#4606 ](https://github.com/rabbitmq/rabbitmq-server/pull/4606 )
2022-08-29 01:42:59 +08:00
2022-09-20 06:38:58 +08:00
* When a virtual host is added, it now can be configured with default queue type.
In part contributed by @adamncasey .
GitHub issues: [#5305 ](https://github.com/rabbitmq/rabbitmq-server/pull/5305 ), [#5769 ](https://github.com/rabbitmq/rabbitmq-server/pull/5769 )
2022-08-29 01:42:59 +08:00
#### Bug Fixes
2022-09-02 07:12:55 +08:00
* Durable classic queues could get "lost" under certain conditions when a node failed.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#4563 ](https://github.com/rabbitmq/rabbitmq-server/pull/4563 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* Nodes could get stuck when performing a rolling restart on Kubernetes where DNS hostname
resolution was not available early on node boot.
For example, this is the case with a [popular default caching setting of CoreDNS ](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5438 ](https://github.com/rabbitmq/rabbitmq-server/pull/5438 )
2022-08-29 01:42:59 +08:00
2022-09-20 06:55:01 +08:00
* More robust free disk space monitoring implementation for Windows.
GitHub issue: [#5738 ](https://github.com/rabbitmq/rabbitmq-server/pull/5738 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
### Stream Plugin
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
#### Enhancement
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* RabbitMQ now supports [partitioned streams ](https://blog.rabbitmq.com/posts/2022/07/rabbitmq-3-11-feature-preview-super-streams/ ) (super streams).
Super streams are a way to scale out by partitioning a large stream into smaller streams.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* Stream protocol clients and RabbitMQ nodes now have a mechanism of exchanging
their capabilities (sets of supported commands).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5308 ](https://github.com/rabbitmq/rabbitmq-server/issues/5308 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* New stream protocol command that allows certain stream metadata to be inspected by
applications.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5412 ](https://github.com/rabbitmq/rabbitmq-server/issues/5412 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* [Single Active Consumer support for streams ](https://blog.rabbitmq.com/posts/2022/07/rabbitmq-3-11-feature-preview-single-active-consumer-for-streams/ ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#3754 ](https://github.com/rabbitmq/rabbitmq-server/pull/3754 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* Consumers now have access to their committed offset information.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5307 ](https://github.com/rabbitmq/rabbitmq-server/issues/5307 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
### OAuth 2 AuthN/AuthZ Backend Plugin
2022-08-29 01:42:59 +08:00
#### Enhancements
2022-09-02 07:12:55 +08:00
* OAuth 2 plugin now [supports more identity providers and OpenID Connect ](https://blog.rabbitmq.com/posts/2022/07/oidc-integration/ ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#4749 ](https://github.com/rabbitmq/rabbitmq-server/pull/4749 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* OAuth 2 plugin now supports [Rich Authorization Requests ](https://oauth.net/2/rich-authorization-requests/ ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5234 ](https://github.com/rabbitmq/rabbitmq-server/pull/5234 )
2022-08-29 01:42:59 +08:00
2022-09-20 06:38:58 +08:00
### Grafana Dashboards
#### Bug Fixes
* Some counters on the Overview page have been moved to global counters introduced in RabbitMQ 3.9.
GitHub issue: [#5463 ](https://github.com/rabbitmq/rabbitmq-server/pull/5463 )
2022-09-02 07:12:55 +08:00
### Management Plugin
2022-08-29 01:42:59 +08:00
#### Enhancements
2022-09-02 07:12:55 +08:00
* Management UI OAuth 2 integration supports more identity providers and [OpenID Connect ](https://openid.net/connect/ ).
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#4749 ](https://github.com/rabbitmq/rabbitmq-server/pull/4749 )
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
* HTTP API responses that render a large rest sets are now more efficient thanks to a more efficient JSON serialiser library used internally.
Peak memory footprint of such queries is also double digit percent lower compared to v3.10.x.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5356 ](https://github.com/rabbitmq/rabbitmq-server/pull/5356 )
2022-08-29 01:42:59 +08:00
2022-09-09 15:57:31 +08:00
* New endpoints that can list and close connections of a specific user.
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
Contributed by @NuwanSameera .
2022-08-29 01:42:59 +08:00
2022-09-02 07:12:55 +08:00
GitHub issue: [#5319 ](https://github.com/rabbitmq/rabbitmq-server/pull/5319 )
2022-08-29 01:42:59 +08:00
2022-09-20 06:38:58 +08:00
### MQTT Plugin
#### Enhancements
* A way to configure an authentication timeout, much like in some other protocols RabbitMQ supports.
Contributed by @gomoripeti .
GitHub issue: [#5755 ](https://github.com/rabbitmq/rabbitmq-server/pull/5755 )
### STOMP Plugin
#### Enhancements
* A way to configure an authentication timeout, much like in some other protocols RabbitMQ supports.
Contributed by @gomoripeti .
GitHub issue: [#5755 ](https://github.com/rabbitmq/rabbitmq-server/pull/5755 )
2022-09-20 06:55:01 +08:00
### Shovel Plugin
#### Enhancements
* Dynamic Shovels that use the "on publish" mode now use flow control internally to avoid balooning
Shovel memory usage when the publishing side outpaces its target node.
Contributed by @gomoripeti .
GitHub issue: [#5715 ](https://github.com/rabbitmq/rabbitmq-server/pull/5715 )
2022-08-29 01:42:59 +08:00
### Dependency Changes
2022-09-02 07:12:55 +08:00
* `ra` upgraded to [`2.3.0` ](https://github.com/rabbitmq/ra/releases )
* `osiris` upgraded to [`1.3.0` ](https://github.com/rabbitmq/osiris/tags )
* `prometheus` upgraded to [`4.9.0` ](https://github.com/deadtrickster/prometheus.erl/tags )
* `jsx` was replaced with [`thoas` ](https://github.com/lpil/thoas )
2022-09-26 20:16:21 +08:00
## Source Code Archives
To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.11.0.tar.xz`
instead of the source tarball produced by GitHub.