[rabbitmq-discuss] Workpool memory leak on 3.3.1?

Michael Klishin mklishin at gopivotal.com
Mon Jun 2 17:14:20 BST 2014

On 2 June 2014 at 20:09:44, gui.balde (gperes at daitangroup.com) wrote:
> > We're using spring-amqp 1.3.4. It uses a inner class InternalConsumer  
> that
> extends rabbitmq-client's DefaultConsumer (found at spring-amqp's  
> BlockingQueueConsumer). It handles devilery by putting items  
> on a
> BlockingQueue.
> Since we're using AckMode.NONE on spring-amqp, I believe we  
> use the default
> basicQoS value.
> Should I try a different basicQoS?

By default there is no limit on how many messages consumers can be given.
Plus you use automatic acknowledgements. This means that RabbitMQ will
try to deliver messages to your consumer as fast as possible,
and if the consumer cannot keep up, its internal BlockingQueue will grow
and grow until you run out of heap. 

This is not a memory leak. You need to use manual acknowledgements
and a non-unlimited basic.qos value (equal to roughly how many messages
you expect to be processed at a time).

Software Engineer, Pivotal/RabbitMQ

More information about the rabbitmq-discuss mailing list