我想有選擇地從AMQP隊列中刪除消息,甚至不讀取它們。如何有選擇地從AMQP(RabbitMQ)隊列中刪除消息?
的情況如下:
發送方要到期基於一個事實,即X型的新信息到達X型的消息。因爲用戶很可能沒有使用類型爲X的最新消息,所以發佈者應該刪除先前的X型消息並將最新消息放入隊列中。整個操作對用戶來說應該是透明的 - 事實上,他應該使用像STOMP這樣簡單的東西來獲取消息。
如何使用AMQP執行此操作?或者在另一個消息協議中更方便?
我想避免複雜的基礎結構。所需的全部消息與上述一樣簡單:一個隊列,一個訂閱者,一個發佈者,但發佈者必須能夠根據給定標準臨時刪除消息。
發佈者客戶端將使用Ruby,但實際上我會盡快處理任何語言,只要我發現如何在協議中執行此操作。
在我的情況下,使用隊列的唯一原因是X,Y,Z事件是交錯的,用戶應該按照它們來的順序讀取它們 - 但只有最新的X,最新的Y和最新的Z.而且,類型數量是數千的順序,所以用戶不會聽到數千個隊列。 – 2010-08-09 00:55:46
啊。聽成千上萬的隊列不會有問題(幾乎沒有開銷)。一旦他們在隊列中,你不能真正有選擇地刪除消息。它發生在我身上,你想要的是一個支持原子移動操作的文件服務器:發佈者啓動wrtiting到一個臨時文件中,當它完成時,將該文件移動(重命名)爲X;客戶端然後只讀取文件X. – scvalex 2010-08-09 09:09:01