2017-10-05 99 views
0

我想深入瞭解客戶端和RabbitMQ服務器之間的Push API通信是如何工作的。AMQP,RabbitMQ Push API如何工作?

據我所知 - 但糾正我的情況下 - 客戶端打開一個TCP連接到代理(RabbitMQ),並保持這個連接活着,直到客戶決定關閉它。但在此連接期間,客戶端可以立即獲取消息。

我的問題是,在這個連接期間,客戶端監視代理以詢問他的消息,或者當代理將消息轉發給隊列,客戶端訂閱時,只需要連接並將數據推送到客戶?

第一種情況:客戶端監控消息

最後一種情況的券商:客戶端不需要監視經紀人,經紀人只是把數據

或其他?

+0

如果你真的想得到關於AMPQ如何工作的正確見解,我強烈建議從[閱讀規格]開始(http://docs.oasis-open.org/amqp/core/v1.0/amqp- core-complete-v1.0.pdf),而不是試圖想象這個事情可能會如何工作...... – fvu

回答

1

有兩種選擇來接收消息

  1. 客戶端註冊的信道上的消費者回調(basicConsume);經紀人然後「推」消息給消費者。

  2. 客戶端發送經紀人basicGet並收到一條消息(如果存在)。

第一個用例是最常見的。

既然你用來標記問題,我假設你在Spring中很有趣。對於第一種情況,Spring AMQP有一個監聽器容器(和@RabbitListener註釋);對於第二種情況,可以使用RabbitTemplate接收操作之一。

我建議你看看tutorials以獲得基本的瞭解。它們涵蓋了幾種語言,包括純Java和Spring AMQP。您也可以查看Spring AMQP Reference Manual