2012-11-19 33 views
1

是否可以配置一個RabbitMQ交換機或隊列,使得至多有一個帶有給定路由鍵的消息在任何時候都處於掛起狀態?如果新消息到達,舊的消息將被丟棄,並且新消息被排隊。配置RabbitMQ來替換一個新的掛起的消息

如果此選項不可用,那麼在應用程序級別實現此選項的最佳方法是什麼?即當應用程序收到消息時,它如何檢查是否還有更多待處理消息?

+0

我有,你可能要像最後一個值緩存的感覺。但我不確定。你能舉一個你想做什麼的具體例子嗎 – robthewolf

+0

@robthewolf我使用rabbit mq在服務器和客戶端之間進行通信。服務器發送消息告訴客戶端應該處於什麼狀態。在這種情況下,客戶端可以斷開連接,並等待客戶端重新連接。當客戶端重新連接時,它確實對服務器發送的最後一條消息感興趣,因爲最後一條消息表示服務器希望此時客戶端處於的狀態。 –

回答

3

您需要安裝最後一個值緩存並啓用它。您的交換將是類型「x-lvc」,它繼承自直接交換類型。

每次連接到MQ時,都會創建一個隊列並綁定到此交換機。它會將最近的消息傳遞給隊列。這是確保您獲得最新信息的完美選擇。發送到該交換機的所有其他消息都將被丟棄,除非有連接的隊列。所以一旦連接,您將繼續收到更新。

這裏是安裝說明: https://github.com/simonmacmullen/rabbitmq-lvc-plugin

這裏是一個類似的問題: RabbitMQ messaging - initializing consumer