【问题标题】:MassTransit Saga - Errors & InconsistenciesMassTransit Saga - 错误和不一致
【发布时间】:2012-09-28 09:36:43
【问题描述】:

我已经实现了很多次都可以正常工作的公共交通传奇。但是,有时消息会进入错误队列或似乎消失了。我正在使用 RabbitMQ。

我想知道: 1. 如何获取导致消息进入错误队列的原因/异常消息? (注意:我的处理程序逻辑位于 try-catch 块中,因此显然这些错误甚至在调用处理程序逻辑之前就发生了) 2. 丢失消息的原因是什么?

提前致谢。

【问题讨论】:

  • 我做了一些研究,发现我可以使用 NLog 或 Log4Net 配置日志记录,但我似乎看不到任何有关如何配置日志记录的示例。帮助任何人?
  • 邮件列表可能是更好的提问场所:groups.google.com/forum/#!masstransit-discuss。您还可以查看文档站点:masstransit.readthedocs.org/en/master
  • 谢谢@Travis。但是,就像我在下面的回答中指出的那样,文档站点似乎没有包含有关如何使用 NLog 配置日志记录的说明。
  • 如果您愿意提出拉取请求以包含该文档,我们很乐意接受更新文档以涵盖此内容。

标签: rabbitmq messaging servicebus masstransit saga


【解决方案1】:

我似乎已经想通了:要获取异常,配置 NLog(或 log4Net),添加对适当 NLogIntegration 库的引用,最后在服务总线的初始化中包含 sbc.UseNLog(); (对于 NLog)。似乎没有在线文档涵盖此内容。必须通过查看 NLogIntegration 库的方法来弄清楚。

关于消息进入错误队列的问题,错误消息是“消息重试限制超出 rabbitmq://localhost/workers_sagas:08cf6e3e-d772-e62b-1803-73779fa60000”。显然,这是由于我使用 Saga Persistence 的 In-Memory 存储库这一事实造成的。因此,每当托管 saga 的进程重新启动时,所有尚未完成的 saga 都会导致上述错误,因为它们不再位于存储库中。

【讨论】:

  • 正确,如果您希望 NHibernate 存储库超出进程生命周期,请使用它们。
  • 感谢您发布此信息。我花了太长时间才发现如何使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多