We have been experimenting with RabbitMQ. During those experiments we have seen some strange behavior with respect to a worker queue.
One of the observations is that the read performance of a queue does not change when we add or remove processes that read from that queue. For example: when a single process handles messages at a rate of 800 msg/sec. Adding a second (similar) process has the result of both processes handling messages at a rate of 400 msg/sec each, with again 800 msg/sec as total. When we shutdown one of the processes, the msg rate of the other process increases to (you guessed) 800 msg/sec.
This is not what we expected. Why does the throughput not double when we add a second reader to a queue?
We are using the RabbitMQ .NET client (in combination with EasyNetQ Advanced API). We have the publisher confirms switched on, use a prefetch_count (Qos) of 50, Ack messages when they have been processed, and use durable exchanges, queues and messages.
We must be doing something wrong, any pointer in the right direction is very welcome...