在我的測試應用程序中,我可以看到處理異常的消息被自動插入默認的EasyNetQ_Default_Error_Queue,這非常棒。然後,我可以使用Hosepipe成功轉儲或重新發送這些消息,這也可以正常工作,但需要下降到命令行並針對Hosepipe和RabbitMQ API調用以清除重試消息的隊列。有沒有簡單的方法來訂閱EasyNetQ中的默認錯誤隊列?
所以我想我的應用程序最簡單的方法是隻訂閱錯誤隊列,所以我可以使用相同的基礎結構重新處理它們。但在EastNetQ中,錯誤隊列似乎很特殊。我們需要使用適當的類型和路由ID認購,所以我不知道這些值應該是什麼錯誤隊列:
bus.Subscribe<WhatShouldThisBe>("and-this", ReprocessErrorMessage);
我可以使用簡單的API訂閱錯誤隊列,或者我需要挖掘到advanced API?
如果我的原始郵件的類型是TestMessage
,然後我想能夠做這樣的事情:
bus.Subscribe<ErrorMessage<TestMessage>>("???", ReprocessErrorMessage);
其中ErrorMessage
是EasyNetQ提供包裹所有錯誤的類。這可能嗎?
感謝您的幫助邁克。你認爲爲此公開一個友好的包裝會是一個好主意嗎?默認情況下,簡單的API寫入這個錯誤隊列,所以對我來說它有一個機制可以透明地使用這些錯誤。即使使用上面的代碼,我想我需要在錯誤消息處理程序('switch(error.BasicProperties.Type)')中使用某種switch語句,然後我可以將原始消息反序列化爲正確的類型,這有點醜陋。如果我可以訂閱我感興趣的特定類型的錯誤,那將會很好。 – 2013-02-25 11:22:15
順便說一句我喜歡EastNetQ圖書館。感謝您的辛勤工作和出色的文檔。 – 2013-02-25 11:22:48
感謝您的好評!我已將您的建議添加到問題列表https://github.com/mikehadlow/EasyNetQ/issues/71,但我並不完全相信。 – 2013-02-25 15:34:31