Roberto Alessi
Roberto Alessi

Reputation: 154

Dequeuing in batches

When dequeuing from RabbitMQ it seems that the entire queue of messages is taken into memory and then processed, a minimal example can be the tutorial at https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html. Giving for example 1000 messages, they are taken all together in the event Received and the event handler manages 1000 messages: instead, I would to take 100 messages at time in order to divide the message consuming among 2 or more servers using a load balancer as HAProxy. Is it possible or the only possibility is in the event handler make a manual round robin to other servers?

Upvotes: 0

Views: 81

Answers (1)

Gabriele Santomaggio
Gabriele Santomaggio

Reputation: 22682

You have to use the prefecth to decide how many messages you want to download to the client.

instead, I would take 100 messages at a time in order to divide the message consuming among 2 or more servers.

it is what is explained here of "Fair dispatch" section, in your case you have to set the prefetch to 100 instead of 1 and attach more consumers to the same queue.

Upvotes: 1

Related Questions