使用具有可恢复性的萨加斯



我们在恢复来自 Sagas 的邮件时遇到问题。

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

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

这是一种有效的方法吗?如果没有,如何解决重试后的 Saga 到处理程序失败消息?

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

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

如果您想在此基础上开始讨论,请查看我们的社区平台。

最新更新