2

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

4

1 回答 1

3

从状态机 saga 中的行为执行路由滑动是可能的,而且实际上很常见。但是,建议将命令从 saga 发送到普通消费者,然后由其构建并执行路由单。

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

通过为路由单设置一个单独的状态机,然后可以添加诸如计划重试之类的内容,这可以为路由单活动建模的业务事务增加弹性。它还将路由单的关注点分开,并仅使用业务事件来保持原始 saga 的干净。

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

于 2017-10-03T18:10:56.307 回答