在我的测试应用程序中,我可以看到处理异常的消息被自动插入默认的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