3.4.4

Latest release in branch 3.4
Released 11 Feb 2015 (11 years ago)

SoftwareRabbitMQ
Branch3.4
Initial release3.4.0
21 Oct 2014 (11 years ago)
Latest patch release3.4.4
11 Feb 2015 (11 years ago)
RequirementErlang/OTP R16B03+
End of community support31 Oct 2015 (Ended 10 years, 6 months ago)
End of commercial support31 Oct 2015 (Ended 10 years, 6 months ago)
Release noteshttps://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_4_4
Source codehttps://github.com/rabbitmq/rabbitmq-server/tree/rabbitmq_v3_4_4
RabbitMQ 3.4 ReleasesView full list

What Is New in RabbitMQ 3.4

RabbitMQ 3.4 introduced significant improvements focused on protocol support, operational tooling, and core stability. This release marked a major step forward for users of MQTT and for operators managing large clusters.

Category Key Changes
New Features Official MQTT plugin, Shovel management via CLI, AMQP 0-9-1 consumer cancellation notification.
Improvements Memory use optimization, better cluster formation reliability, enhanced STOMP plugin.
Bug Fixes Numerous fixes for queue replication, message persistence, and connection handling.
Deprecated Several older, less efficient internal data structures and APIs.

How did MQTT support improve in RabbitMQ 3.4?

The MQTT plugin was promoted from experimental to a fully supported, stable component. This meant it was now bundled with the server, deemed production-ready, and received first-class support. The plugin gained improved handling of QoS 1 and 2 flows, better session management, and more configurable topic permissions.

In practice, this allowed IoT and mobile applications using MQTT to rely on RabbitMQ as a robust, scalable message broker. The integration leveraged RabbitMQ's existing authentication, authorization, and clustering features, making it a compelling alternative to standalone MQTT brokers.

What new management and operational features were added?

RabbitMQ 3.4 added the ability to manage the Shovel plugin via the rabbitmqctl command-line tool. Before this, Shovel configuration was static and file-based. This change allowed operators to dynamically create, update, and delete Shovel links at runtime, greatly improving flexibility in building fault-tolerant federation topologies.

AMQP Consumer Cancellation

A small but critical AMQP 0-9-1 extension was introduced: consumer cancellation notifications. This allowed a server to notify a client if a queue was deleted or a consumer was lost due to other reasons, preventing clients from waiting indefinitely for messages that would never arrive.

channel.basicConsume(queueName, new DefaultConsumer(channel) {
    @Override
    public void handleCancel(String consumerTag) throws IOException {
        // Logic to handle consumer cancellation
    }
});

How were memory usage and clustering made better?

The core server saw optimizations in how it managed memory for messages and connections, reducing the overall footprint under similar loads. This was crucial for deployments with many concurrent connections or long queues.

Cluster formation and node recovery logic was hardened. The fixes addressed edge cases where nodes could get stuck during startup or fail to rejoin a cluster after a network partition, improving overall system resilience.

What happened to the STOMP plugin in this release?

The STOMP plugin received substantial updates for better compliance with the STOMP 1.2 specification. It improved header handling, added support for heart-beating as per the spec, and fixed several connection lifecycle bugs. This made RabbitMQ a more reliable choice for STOMP-based clients, often used in web messaging.

FAQ

Is the MQTT plugin in RabbitMQ 3.4 safe for production use?
Yes, absolutely. Version 3.4 promoted the MQTT plugin from experimental to supported status. It's bundled with the server and considered stable for production workloads, including QoS 1 and 2.

Can I now manage Shovels without restarting nodes?
Yes. One of the key operational adds in 3.4 is the ability to manage Shovel links dynamically via rabbitmqctl. You can add, update, or remove Shovels at runtime, which is a huge improvement over the old static configuration method.

What should I do if my AMQP client gets a consumer cancellation?
You should implement the consumer cancellation callback in your client code. This notification means the queue was deleted or the consumer was otherwise invalidated. Your application logic should react by stopping message consumption attempts and potentially re-declaring the queue.

Did RabbitMQ 3.4 change how mirroring works?
Not fundamentally, but it included important bug fixes for mirrored queues, especially around failover and synchronization. These fixes made mirroring more reliable but didn't introduce new mirroring features or change the policy configuration.

Are there any breaking changes I need to watch for when upgrading to 3.4?
Most changes are additive or fix bugs. However, some deprecated internal APIs and data structures were removed. If you've written custom plugins or deeply integrated tools, check the release notes for your specific version. For most users, the upgrade from 3.3.x is smooth.

Releases In Branch 3.4

Version Release date
3.4.4 11 Feb 2015
(11 years ago)
3.4.3 07 Jan 2015
(11 years ago)
3.4.2 25 Nov 2014
(11 years ago)
3.4.1 29 Oct 2014
(11 years ago)
3.4.0 21 Oct 2014
(11 years ago)