[rabbitmq-discuss] Java client lib: up to 5 threads created in client when server publishes new message

Simon MacMullen simon at rabbitmq.com
Mon Sep 3 17:54:51 BST 2012


On 03/09/12 17:40, Simon MacMullen wrote:
> On 02/09/12 14:06, sharonbn wrote:
>> I created a simple client in Java, which consumes messages from a
>> queue in a
>> loop.
>> what I see in the debugger, is that whenever I publish a new message into
>> queue "q0"
>> a new thread is opened in the client. until 5 threads are open and
>> running.
>> (this is besides the single thread named "AMQP Connection")
>> the threads begin when the messages are published, not when they are
>> consumed...
>>
>> is this expected behavior?

Ah, I missed "the threads begin when the messages are published, not 
when they are consumed."

The threads are started up when the message is consumed by the client 
(which is likely to be very soon after you published!) But this could be 
some time before you invoke QueueingConsumer.nextDelivery() - since 
QueueingConsumer will of course itself queue these messages.

> Yes. This is the thread pool for consumer callbacks to get executed in.
>
>> can this be changed?
>
> Yes, invoke ConnectionFactory.newConnection(ExecutorService, Address[])
> with a different ExecutorService.

...or ConnectionFactory.newConnection(ExecutorService). See:

http://www.rabbitmq.com/api-guide.html#advanced-connection

Cheers, Simon

-- 
Simon MacMullen
RabbitMQ, VMware


More information about the rabbitmq-discuss mailing list