RabbitMQ-发送消息方式Round-Robin

When a Rabbit queue has multiple consumers, messages received by the queue are served in a round-robin fashion to the consumers. Each message is sent to only one consumer subscribed to the queue. Let’s say you had a queue named seed_bin and consumers Farmer Bob and Farmer Esmeralda subscribed to seed_bin. As messages arrive in seed_bin, the deliveries would look like this:fetch

1 Message_A arrives in the seed_bin queue.
2 RabbitMQ sends Message_A to Farmer Bob.
3 Farmer Bob acknowledges receipt of Message_A.
4 RabbitMQ removes Message_A from the seed_bin queue.
5 Message_B arrives in the seed_bin queue.
6 RabbitMQ sends Message_B to Farmer Esmeralda.
7 Farmer Esmeralda acknowledges receipt of Message_B.
8 RabbitMQ removes Message_B from the seed_bin queue.
this

摘自<RabbitMQ in Action>spa

若存在多个consumer,每一个consumer的负载可能不一样,有些处理的快有些处理的慢RabbitMQ并无论这些,只是简单的以round-robin的方式分配message这可能形成某些consumer积压不少任务处理不完而一些consumer长期处于饥饿状态能够使用prefetch_count=1的basic_qos方法可告知RabbitMQ只有在consumer处理并确认了上一个message后才分配新的message给他不然分给另外一个空闲的consumerip

相关文章
相关标签/搜索