2014-04-30 82 views
2

我在我的webcrawler中使用ampq隊列 - 每個爬蟲實例將從隊列中的消息中獲取一個url,然後將其找到的url添加到隊列中。rabbitmq丟棄消息,如果某些字段值不唯一?

由於將有多個履帶式實例,每個實例都可以找到相同的URL並將其添加到隊列中。

是否有一個內置的方式告訴rabbitmq丟棄消息,如果url是知道的,或者檢查隊列是否已經存在帶有url的消息?

回答

8

有沒有辦法用RabbitMQ機制來檢查消息的唯一性。

AMQP隊列,特別是RabbitMQ隊列是純粹的FIFO隊列。

也許,您必須在應用程序端實現唯一性檢查。

P.S .:

有極好的解決方法在隊列x-max-length組聲明具有相同名稱爲唯一的字段(或它的散列)隊列爲1個,所以如果有重複將會丟失未處理消息。但是這需要很多帶有URL的隊列(唯一的字段 - 網址哈希),因此並不是最好的解決方案,特別是當涉及從數以千計的具有不明顯名稱的隊列中消耗所有消息時。

相關問題