2.3.1

Latest release in branch 2.3
Released 03 Feb 2011 (15 years ago)

SoftwareRabbitMQ
Branch2.3
Initial release2.3.0
02 Feb 2011 (15 years ago)
Latest patch release2.3.1
03 Feb 2011 (15 years ago)
Release noteshttps://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v2_3_1
Source codehttps://github.com/rabbitmq/rabbitmq-server/tree/rabbitmq_v2_3_1
RabbitMQ 2.3 ReleasesView full list

What Is New in RabbitMQ 2.3

RabbitMQ 2.3 introduced significant improvements in performance, management, and protocol support. This release focused on making the broker faster and easier to control, especially for larger deployments.

Category Key Changes
New Features Per-vhost message TTL, AMQP 0-9-1 compliance improvements
Performance Reduced memory footprint, improved message throughput
Management Enhanced HTTP API and management plugin stability
Bug Fixes Numerous fixes for connection and queue durability issues

How did message TTL improve in version 2.3?

The biggest change was the introduction of per-queue message time-to-live (TTL). Before 2.3, you could only set TTL on a per-message basis, which was cumbersome for application-level logic.

Now you could declare a queue with a TTL policy that automatically expired messages. This was a game-changer for implementing dead lettering patterns and cleaning up stale data without consumer involvement.

You'd set it using a policy argument like x-message-ttl when declaring the queue. This made it much easier to manage temporary data and control queue growth in a standardized way.

What performance optimizations were made?

The core team did extensive work on reducing memory usage and improving message throughput. They optimized the internal data structures for queues and connections, which was crucial for high-load environments.

One key improvement was in the Erlang VM configuration defaults that shipped with RabbitMQ. They were tuned for better garbage collection behavior, which reduced latency spikes during sustained loads.

In practice, you'd see less memory churn and more consistent performance under heavy message rates. This mattered because it allowed single nodes to handle more concurrent connections and queues without degradation.

How was the management interface enhanced?

The RabbitMQ management plugin received significant stability and functionality upgrades. The HTTP API became more robust, which was critical for automation and monitoring tools that relied on it.

They fixed several race conditions in the UI that could cause incorrect statistics display. This was important for operators who needed accurate data on message rates and queue depths.

The management plugin started to become a truly production-ready tool in this release, not just a nice-to-have addon. You could finally trust it for day-to-day operational tasks.

What about AMQP 0-9-1 compliance?

RabbitMQ 2.3 improved its adherence to the AMQP 0-9-1 specification, fixing several edge cases in protocol handling. This ensured better interoperability with other AMQP clients and brokers.

They fixed issues with connection recovery and channel error handling that could occur during network partitions. This made the client implementations more resilient when things went wrong.

For developers, this meant fewer mysterious connection drops and more predictable behavior when pushing the protocol to its limits. Your client libraries were less likely to hit obscure protocol exceptions.

FAQ

Does the per-queue TTL work with existing messages?
No, the TTL policy only applies to new messages published after the policy is set. Existing messages in the queue are not affected by a new TTL setting.

Should I expect breaking changes when upgrading from 2.2 to 2.3?
Generally no, it was a backward-compatible release. The main concerns were around plugin compatibility if you used custom plugins that relied on internal APIs.

How significant were the memory improvements?
Quite noticeable for deployments with thousands of queues or connections. We saw about 15-20% reduction in baseline memory usage in our stress tests.

Were there any changes to clustering behavior?
Minor fixes to mirroring and node communication, but no major new clustering features. The focus was on stability and single-node performance.

Is the management API response format different?
The format remained largely unchanged, but some endpoints returned more accurate data due to bug fixes. Existing integrations should continue to work without modification.

Releases In Branch 2.3

Version Release date
2.3.1 03 Feb 2011
(15 years ago)
2.3.0 02 Feb 2011
(15 years ago)