0

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

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

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

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

4

1 回答 1

0

您可以使用立即分派来不等待处理程序完成。

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

如果您想以此为基础展开讨论,请查看我们的社区平台

于 2018-09-21T06:58:34.653 回答