Skip to content

Toro Cloud Dev Center


Tuning RabbitMQ

Before going into production and tuning RabbitMQ, it is important to note that its JMS client does not fully implement the JMS API. This means that some features of Martini will be unavailable or will not work as expected (e.g. throwing exceptions unexpectedly). As an alternative, you can use ActiveMQ (Classic) or ActiveMQ Artemis as their client libraries are fully JMS API compliant.

Network

Running RabbitMQ in a production environment may require you to configure your network to ensure a high number of clients can be served. RabbitMQ provides different customizable settings. All of these are listed on the networking page of its documentation.

Message format

To decrease latency and increase throughput, consider checking the size of your messages. Small messages are faster to transfer on the wire compared to larger ones. Avoid verbose formats such as XML, or compress the content and only include needed data.

High Performance Erlang (HiPE)

Erlang, the programming language used by RabbitMQ, has a native compiler called HiPe which allows flexible and user-controlled compilation of programs to native machine code. Using HiPE on RabbitMQ can increase throughput by double digits at a cost of slower start up time. See RabbitMQ's core server configurable section on how to use this.

Plugins

RabbitMQ contains different plugins enabled by default. Some plugins may consume a lot of resources but you may not be using them at all. Review the list of plugins and disable the ones you do not need.

Monitoring

Monitoring is not technically part of the tuning process but it is nice to have it enabled for capturing issues and potential problems. RabbitMQ allows monitoring several aspects of its system. See the monitoring page of its documentation to learn more about this. Additionally, the management plugin includes metrics data for the last 24 hours along with a user interface. For longer-term monitoring, you will need to use external monitoring tools.

Aside from tuning, it is worth to have a read of RabbitMQ's production checklist for an in-depth guide.