【发布时间】:2021-09-15 19:16:31
【问题描述】:
假设我们有两个长期存在的流程管理器。例如,这两个传奇都经营着超过 1000 万件商品。第一个传奇为每个项目添加了一些东西。第二个传奇将它从每个项目中删除。鉴于两个流程管理器都需要几分钟来完成其工作,如果我同时运行它们,我会遇到麻烦。
这些项目中的一部分会保留价值,而其余的则不会。结果实际上接近随机,并且取决于影响特定项目的命令顺序。我想知道在失败的情况下重新调度“删除”命令是否可以解决问题。我的意思是,如果您尝试删除不存在的值,您应该等待第一个 saga 添加该值。但是,当流程管理器正在工作时,其他人可能会发送“删除”或“添加”命令。在这种情况下,我的方法会失败。
我该如何解决这样的问题? :)
【问题讨论】:
标签: asynchronous architecture domain-driven-design cqrs distributed-system