多個消費者監聽同一個隊列


生產者:代碼如上一章

消費者1:代碼如前一章

消費者2:與消費者1代碼完全相同

注意:此時,消費者1和2監聽在同一個隊列上,隊列會以輪訓的方式將10個消息分別交給消費者1和2進行處理。

但是這種情況下,如果消費者1處理的消息比較繁重,而消費者2處理的消息比較輕松地話,實際上應該讓消費者2多處理一些消息,在消費者代碼添加中如下代碼:

        /** * basicQos(int prefetchCount) * prefetchCount:maximum number of messages that the server will deliver, 0 if unlimited */ channel.basicQos(1);//阻止rabbitmq將消息平均分配到每一個消費者,會優先的發給不忙的消費者,如果當前的消費者在忙的話,就將消息分配給下一個消費者

 

不可以,多個消費者只能是不同的隊列才能實現你說的要求。

AMQP 0-9-1里已經解釋,同一隊列多個消費者時,已經內置實現了負載均衡的deliver機制,所以一個消息只能被一個消費者消費。requeued或redelivered應該不會是你想要的,如果這樣做的話自己控制RabbitMQ消息的delivery會特別麻煩

同一交換機的fanout可以輕松實現你的需求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM