I get a rate of 48-51k on avg consistently. Either:
Remove back pressure (no QOS/prefetch), increase size of consumer internal queue.
You run the risk of losing messages here if you don’t have enough RAM, or the internal Queue gets filled.
Given enough RAM, you would need over 2.1 billion messages to fill up an internal queue with the max cap (which is Int.maxValue).
For guaranteed reliability regardless of hardware/system resources, use a high prefetch count and execute only async code in the consumers. Any blocking code should be handed off to separate thread. I achieve 20-25k msg per sec consistently this way.
My experiments were on a single 16gb ram machine with 145 million messages stored in the RabbitMQ queue for benchmark purposes.