0
我有一個RabbitMQ隊列用於生成文檔。基本上,每個文件都有type
和state
(新,處理,準備),所以我用像type.state
路由鍵話題的交流。每次文檔更改時,都會將帶有最後文檔說明的消息發送給交換機,並且它工作得很好。RabbitMQ插件刪除重複郵件
然而有時文檔可以被處理兩次:
- 用戶發送新的文檔。所以發送新消息
report.new
進行交換。 - 雖然工作人員尚未啓動文檔處理(隊列尚未到達),但用戶更新了文檔。發送相同文檔的新消息
report.new
。 - 所以現在工人得到的第一個消息,並開始他的工作,而該文件被改變,因此這項工作是毫無道理的。
現在我只是添加少量的代碼到工人,從比較與數據庫中的一個消息last_modified
文檔關鍵,如果他們是不一樣的ACK消息。但我不認爲這是最好的解決方案。
我的想法是添加ID
到郵件頭,並且有一定的RabbitMQ插件,它將會從隊列中相同ID
刪除舊郵件。
謝謝。
P.S.也許另一個MQ引擎在這裏很有用?例如。也許ActiveMQ有這樣的功能?