RabbitMQ 3.12 will be released soon with many new features and improvements.
This blog post focuses on the the performance-related differences.
The most important change is that the lazy
mode for classic queues is now the standard behavior (more on this below).
The new implementation should be even more memory efficient
while proving higher throughput and lower latency than both lazy
or non-lazy
implementations did in earlier versions.
For even better performance, we highly recommend switching to classic queues version 2 (CQv2).
RabbitMQ’s core protocol has been AMQP 0.9.1.
To support MQTT, STOMP, and AMQP 1.0, the broker transparently proxies via its core protocol.
While this is a simple way to extend RabbitMQ with support for more messaging protocols,
it degrades scalability and performance.
In the last 9 months, we re-wrote the MQTT plugin to not proxy via AMQP 0.9.1 anymore.
Instead, the MQTT plugin parses MQTT messages and sends them directly to queues.
This is what we call Native MQTT.
The results are spectacular:
- Memory usage drops by up to 95% and hundreds of GBs with many connections.
- For the first time ever, RabbitMQ is able to handle millions of connections.
- End-to-end latency drops by 50% - 70%.
- Throughput increases by 30% - 40%.
Native MQTT turns RabbitMQ into an MQTT broker opening the door for a broader set of IoT use cases.
Native MQTT ships in RabbitMQ 3.12.