我已经实现了一个很有效的masstransit传奇。但是,有时消息会进入错误队列或者似乎消失。我正在使用RabbitMQ。
我想知道: 1.如何获取导致消息进入错误队列的原因/异常消息? (注意:我的处理程序逻辑位于try-catch块中,因此显然这些错误甚至在调用处理程序逻辑之前就会发生) 2.什么可能导致丢失的消息?
提前致谢。
答案 0 :(得分:6)
我似乎已经想到了这一点:要获得例外,配置NLog(或log4Net),添加对相应NLogIntegration库的引用,最后在服务总线的初始化中,包括sbc.UseNLog(); (对于NLog)。似乎没有在线文档涵盖这一点。不得不通过查看NLogIntegration库的方法来弄明白。
在发送到错误队列的消息问题上,错误消息是“消息重试限制超出了rabbitmq:// localhost / workers_sagas:08cf6e3e-d772-e62b-1803-73779fa60000”。显然,这是因为我使用了内存存储库来实现Saga Persistence。因此,每当重新启动托管saga的进程时,所有尚未完成的传奇都会导致上述错误,因为它们不再存在于存储库中。