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

相關文章
相關標籤/搜索