我们正在使用 saga 来建模工作流程。这个工作流等待事件的到来,并根据事件执行一些工作。在某些情况下,我们需要一个接一个地执行多个任务(链接的 .Then 方法),但如果一个任务失败,我们希望补偿整个链。路由单似乎很合适,但我不确定这样的路由单是否可以从传奇中的 Then 方法执行?
最佳答案
从状态机传奇中的行为执行路由单是可能的,实际上也很常见。但是,建议从 saga 向普通消费者发送命令,然后由普通消费者构建并执行路由单。
然后,一个单独的状态机可以监控路由单的进度,使用路由单事件将状态向前移动。一旦路由单完成,路由单状态机可以生成业务事件,原始传奇观察到该业务事件继续前进(在成功的情况下)或转换到失败状态(如果路由单发生故障) .
通过为路由单设置一个单独的状态机,然后可以添加计划重试之类的东西,这可以增加路由单事件建模的业务交易的弹性。它还将路由 list 的关注点分开,并仅使用业务事件保持原始传奇的整洁。
关于masstransit - 如何从 saga 执行路由 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46543260/