3.11.28

Latest release in branch 3.11
Released 21 Dec 2023 (2 years ago)

SoftwareRabbitMQ
Branch3.11
Initial release3.11.0
26 Sep 2022 (3 years ago)
Latest patch release3.11.28
21 Dec 2023 (2 years ago)
RequirementErlang/OTP 25.0+
End of community support01 Jun 2023 (Ended 2 years, 10 months ago)
End of commercial support29 Jun 2024 (Ended 1 year, 10 months ago)
Release noteshttps://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.11.28
Source codehttps://github.com/rabbitmq/rabbitmq-server/tree/v3.11.28
RabbitMQ 3.11 ReleasesView full list

What Is New in RabbitMQ 3.11

RabbitMQ 3.11 is a feature release focused on scaling streams, modernizing authentication, and improving core performance. The key updates are summarized below.

Category Key Changes
New Features
  • Super streams (partitioned streams) for horizontal scaling.
  • Single Active Consumer support for streams.
  • Enhanced OAuth 2 & OpenID Connect support.
  • Rich Authorization Requests (RAR) for OAuth 2.
Core Improvements
  • 10-20% higher throughput for publishers using the default exchange.
  • More efficient connection tracking reduces CPU load under high churn.
  • Virtual hosts can now be created with a default queue type.
Bug Fixes
  • Fixed loss of durable classic queues during node failure.
  • Resolved node startup hangs in Kubernetes with cached DNS.
  • Improved free disk space monitoring on Windows.
Plugin Updates
  • MQTT & STOMP: Configurable authentication timeout.
  • Shovel: Flow control for dynamic shovels in "on publish" mode.
  • Management: Efficient JSON serialization reduces memory for large API responses.
Breaking Changes
  • Requires Erlang 25.0 or newer.
  • All feature flags from the 3.8.x series must be enabled before upgrade.
  • Default open file handle limit capped at 65536 on Linux, *BSD, macOS.

What are the major upgrades in the core server?

The core server sees significant performance and reliability improvements. Connection tracking is now more efficient, which directly lowers CPU usage in environments with high connection churn. This is a common scenario in cloud deployments where containers frequently connect and disconnect.

Publishers using the default exchange will see a noticeable throughput gain of 10% to 20%. This is achieved through internal optimizations in the message routing logic.

Operationally, you can now set a default queue type (e.g., quorum or classic) when creating a virtual host. This simplifies policy management and enforces queue type standards across your applications.

How have streams been enhanced?

Streams receive major new features aimed at production scalability. Super streams introduce native partitioning, allowing a logical stream to be split across several underlying stream nodes. This is the primary method for scaling out stream throughput and storage.

Single Active Consumer (SAC) support is now available for streams. This provides exclusive consumption and continuity, preventing the same message from being processed by multiple consumers—ideal for work queue patterns over streams.

The stream protocol itself is extended. Clients and servers can exchange capability information, and a new command allows applications to inspect stream metadata. Consumers can also now query their committed offset.

What's new for authentication and management?

The OAuth 2 plugin now supports a wider range of identity providers and OpenID Connect, making it easier to integrate with modern enterprise SSO systems. It also adds support for Rich Authorization Requests (RAR), enabling more granular and expressive authorization policies.

The Management plugin benefits from these OAuth 2 improvements for UI login. Additionally, its HTTP API is now more efficient. By switching to a different JSON serialization library, responses for large queries (like listing thousands of connections) are generated faster and with significantly lower peak memory usage.

New API endpoints allow listing and closing all connections for a specific user, improving operational control for administrators.

Are there important changes for other plugins?

Yes, several plugins received quality-of-life and stability updates. Both the MQTT and STOMP plugins now support a configurable authentication timeout, aligning them with other protocols and helping to manage misbehaving clients.

The Shovel plugin has improved memory management for Dynamic Shovels operating in "on publish" mode. It now uses internal flow control to prevent memory ballooning if the publishing side is faster than the target, making it more resilient.

The Grafana dashboard was updated to correctly use global counters introduced in RabbitMQ 3.9, ensuring accurate metrics on the overview page.

What dependencies were upgraded?

Key internal libraries have been updated. The consensus library ra was upgraded to 2.3.0 and the streaming engine osiris to 1.3.0, which underpin quorum queues and streams. The prometheus client library was updated to 4.9.0.

A notable change is the replacement of the jsx JSON library with thoas. This swap is responsible for the improved performance and lower memory footprint in the Management API's JSON serialization.

FAQ

What is the most critical pre-upgrade step for RabbitMQ 3.11?
You must enable all feature flags introduced in the 3.8.x release series. If any are disabled, the 3.11 node will refuse to start. Run rabbitmqctl list_feature_flags to check status and rabbitmqctl enable_feature_flag for any that are disabled.

Why does RabbitMQ 3.11 require Erlang 25?
Erlang 25 brings feature parity for ARM64 and x86 architectures, including the JIT compiler and modern flame graph profiling tools. It also provides the latest TLS 1.3 implementation. This is a baseline for performance and security improvements.

How do I support more than 65536 concurrent connections now?
The default open file handle limit is now capped. To increase it, you must: 1) Raise the OS limit (e.g., via systemd), and 2) Set the ERL_MAX_PORTS environment variable to your desired value, like 100000.

Can I run 3.11 nodes in a cluster with 3.10 nodes?
Yes, for a rolling upgrade. However, 3.11-specific features like super streams will not be available until all nodes are upgraded. Run mixed-version clusters only for the short duration of the upgrade.

What is a "super stream" and when should I use it?
A super stream is a partitioned stream. It spreads a large logical stream across several regular stream nodes, distributing load and storage. Use it when you need to scale a single stream's throughput beyond the capacity of one RabbitMQ node.

Releases In Branch 3.11

Version Release date
3.11.28 21 Dec 2023
(2 years ago)
3.11.27 13 Dec 2023
(2 years ago)
3.11.26 21 Nov 2023
(2 years ago)
3.11.25 31 Oct 2023
(2 years ago)
3.11.24 17 Oct 2023
(2 years ago)
3.11.23 11 Sep 2023
(2 years ago)
3.11.22 24 Aug 2023
(2 years ago)
3.11.21 17 Aug 2023
(2 years ago)
3.11.20 17 Jul 2023
(2 years ago)
3.11.19 26 Jun 2023
(2 years ago)
3.11.18 05 Jun 2023
(2 years ago)
3.11.17 29 May 2023
(2 years ago)
3.11.16 13 May 2023
(2 years ago)
3.11.15 29 Apr 2023
(3 years ago)
3.11.14 27 Apr 2023
(3 years ago)
3.11.13 31 Mar 2023
(3 years ago)
3.11.12 30 Mar 2023
(3 years ago)
3.11.11 20 Mar 2023
(3 years ago)
3.11.10 02 Mar 2023
(3 years ago)
3.11.9 12 Feb 2023
(3 years ago)
3.11.8 30 Jan 2023
(3 years ago)
3.11.7 17 Jan 2023
(3 years ago)
3.11.6 05 Jan 2023
(3 years ago)
3.11.5 13 Dec 2022
(3 years ago)
3.11.4 28 Nov 2022
(3 years ago)
3.11.3 09 Nov 2022
(3 years ago)
3.11.2 18 Oct 2022
(3 years ago)
3.11.1 13 Oct 2022
(3 years ago)
3.11.0 26 Sep 2022
(3 years ago)
3.11.0-rc.2 22 Sep 2022
(3 years ago)
3.11.0-rc.1 03 Sep 2022
(3 years ago)
3.11.0-beta.1 03 Sep 2022
(3 years ago)