【问题标题】:Using Sagas with Recoverabilty使用具有可恢复性的 Sagas
【发布时间】:2018-09-20 15:07:06
【问题描述】:

我们在恢复源自 Sagas 的消息时遇到问题。

当 Saga 发送消息进行处理时,消息处理程序有时会因异常而失败。我们目前使用 try/catch,当抛出异常时,我们“回复”一个失败的消息给 Saga。这种方法的问题在于,由于我们正在消息处理程序中处理错误,因此不会发生可恢复性重试。

我的想法是向管道添加自定义逻辑,如果命令消息实现了一些特殊接口,如果发生异常(重试失败后),自定义逻辑将向 Saga 发送失败消息响应,但我不知道在哪里插入管道以允许我在重试失败后发送消息。

这是一种有效的方法吗?如果没有,重试后如何解决 Saga to Handler 失败消息?

【问题讨论】:

    标签: nservicebus nservicebus-sagas


    【解决方案1】:

    您可以使用immediate dispatch 不等待处理程序完成。

    但是,我想建议一种替代方法。为什么不在传奇中创建超时?如果在某个 TimeSpan 内未收到来自处理处理程序的回复,则采用替代路径。处理处理程序有 5 分钟的时间,如果它在 5 分钟内没有响应,我们会做其他事情。如果它在 6 分钟后仍然响应,我们知道我们已经采取了替代路径(使用一个布尔标志左右并将其存储在 saga 数据中)并将为时已晚的回复放在一边。

    如果您想以此为基础展开讨论,请查看我们的community platform

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-11
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2012-12-01
      相关资源
      最近更新 更多