As I said
RabbitMQ dispatches messages equally to consumers using Round Robbin algorithm.
Suppose consider this scenario, where there is one producer and two consumers
C1, C2. Unfortunately consumer C1 is getting more overloaded tasks and C2 is
getting less overloaded tasks. In this case, we have to maintain load balance properly.
How to solve above problem?
We can solve
above problem by using basicQos method with the prefetchCount = 1 setting.
int prefetchCount = 1;
channel.basicQos(prefetchCount);
This
statement tells RabbitMQ that don't dispatch a new message to a consumer until
it has processed and acknowledged the previous one. Instead, it will dispatch
it to the next worker that is not still busy.
No comments:
Post a Comment