事件溯源和传奇补偿事务



关于SO的第一个问题(真的吗??),请耐心听我说:)

我们正在构建一个使用事件源的解决方案。我们的一些业务流程将长期运行,因此我们计划使用传奇将命令编排到几个聚合根

在我的理解中,如果saga发出的命令失败,那么saga将负责向所有先前调用的聚合根发出补偿命令

如果一个聚合根的状态在之后发生了外部(即由其他进程/用户)的变化,但是 saga失败之前,向该聚合根发出了一个补偿命令,该怎么做?

换句话说,如何尝试补偿在某个聚合根的事件流中不是最后一个

事件(在EventStore术语中说话)?

这是一个相当棘手的情况,因为我所看到的是,您可能最终在补偿条目之后出现无效的AR ,使您的补偿操作无效。

您可能需要重新查看流程的设计,以便在您确定流程管理器(saga)能够完成之前不会对ar进行更改。可能是临时存储值以备以后更改。

另一种方法可能是阻止AR上的某些命令,如果它处于某种状态,表明它可能导致这些命令出现问题。用户将无法发出这些命令。您的流程管理器将负责状态和任何状态过期/超时等。

最新更新