2015-04-17 26 views
5

我不能似乎在任何地方找到這些信息也許我不理解它。在RabbitMQ的發佈/訂閱模式中,當生產者生成消息時,消費者如何知道隊列中有新消息?RabbitMQ:pub/sub中是消費者輪詢新消息隊列還是服務器推送消息?

做消費者不斷查詢隊列檢查是否有任何新的信息或不交換「推」通知消費者說有一個新的消息?

+0

參見[這](http://stackoverflow.com/a/31591953/751579)的答案,說明如何_consuming_消息作品:服務器推送和客戶端得到一個異步回調。 – davidbak

回答

4

消費者打開網絡TCP連接和通道到RabbitMQ的服務器。

A basic get將向服務器詢問消息:消息被客戶端從服務器拉出。如果沒有消息可用,則向客戶端發送空的響應。

A consume將啓動消費者場景:服務器將消息推送到客戶端。

所以消費者會知道有消息,因爲它可以拉他們(GET),也可以推到他(消耗)。

該交易所向消費者發送「推送」通知,說有新的 消息?

交換用於路由到隊列。隨着消費者從隊列中消耗,它們不會推消費。

相關問題