There are no standard RabbitMQ tuning guidelines because different applications should be optimized in different ways.
Very often the application needs to be optimized on the client side:
CPU-intensive applications can be optimized by running one thread for each CPU core
I/O-intensive applications can be optimized by running many threads per core in order to hide implicit latencies
In both cases messaging is a perfect fit. In order to optimize the network transfer rate, the AMQP standard prescribes that messages are transferred in bunches, and then consumed one by one by the client (refer to Chapter 1, Working with AMQP).
RabbitMQ allows multithreaded applications to consume messages efficiently; this is covered in the Multithreading and queues recipe.
Another frequent use case is when RabbitMQ is at the foundation of a distributed application serving a large number of clients. In this case, it's more realistic that the bottleneck is the broker and not the client application.
In this...