2015-09-27 65 views
1

我在我的應用程序中使用RabbitMQ來進行Clint和服務器之間的通信。RabbitMQ發佈/訂閱vs輪詢

大多數情況下,客戶端向服務器發送信息,但有時客戶端需要了解服務器中的某些更新。

目前我在1分鐘的時間間隔內使用輪詢來詢問服務器是否有更新。

我的問題是使用發佈/訂閱機制將更新推送到客戶端會更好嗎?

我有大量的客戶端10000所以它可以打開10000個隊列,每個客戶端一個?

回答

3

'更好'是一個相對術語,所以對您而言更好的方法很難說。但是,隊列旨在有效地處理這種事件驅動的系統。 RabbitMQ文檔討論瞭如何使用fanout exchange來處理您的案例。

在隊列中使用事件可以消除不必要的工作(例如,在沒有有效負載時進行輪詢)並減少延遲(您當前的系統引入最多一分鐘的延遲)。在具有輪詢層次的系統中,延遲可能會特別成問題,這會使數據的延遲大大超出程序員最初的預期。

+0

那麼RabbitMQ可以處理如此大規模的隊列嗎?我忘記提及我在Rabbit中使用4個服務器羣集。 –

+0

我相信RabbitMQ將能夠處理您所談論的工作量。正確配置的隊列每秒可以處理10,000條消息,而不會出汗。雖然我不能說你的特定設置...... –