masstransit - 如何从 saga 执行路由 list ?

标签 masstransit saga routing-slip

我们正在使用 saga 来建模工作流程。这个工作流等待事件的到来,并根据事件执行一些工作。在某些情况下,我们需要一个接一个地执行多个任务(链接的 .Then 方法),但如果一个任务失败,我们希望补偿整个链。路由单似乎很合适,但我不确定这样的路由单是否可以从传奇中的 Then 方法执行?

最佳答案

从状态机传奇中的行为执行路由单是可能的,实际上也很常见。但是,建议从 saga 向普通消费者发送命令,然后由普通消费者构建并执行路由单。

然后,一个单独的状态机可以监控路由单的进度,使用路由单事件将状态向前移动。一旦路由单完成,路由单状态机可以生成业务事件,原始传奇观察到该业务事件继续前进(在成功的情况下)或转换到失败状态(如果路由单发生故障) .

通过为路由单设置一个单独的状态机,然后可以添加计划重试之类的东西,这可以增加路由单事件建模的业务交易的弹性。它还将路由 list 的关注点分开,并仅使用业务事件保持原始传奇的整洁。

还有一个很好的演示: https://github.com/phatboyg/Demo-Registration

关于masstransit - 如何从 saga 执行路由 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46543260/

相关文章:

domain-driven-design - 在 CQRS http 应用程序中实现 Saga/进程管理器

c# - 如何正确监控 MassTransit Courier 路由单?

c# - 使用 Autofac 将对象注入(inject) MassTransit Saga

rabbitmq - 使用 RabbitMQ 停止 MassTransit 中的特定使用者

c# - MassTransit 6.0 中的 NLog 与 Autofac?

c# - 使用 Entity Framework 和 MySQL 实现 MassTransit saga 持久性

java - 如何将 Axon4 中的事件重播/转换到不同的上下文中?

android - React Native API 实现导致错误