我是 CQRS 和最终一致性模型的新手,如果这是一个愚蠢的问题,请原谅我。
鉴于我刚刚开始,我在内存中有一个本地 CommandBus 和 EventPublisher。我的事件被持久化到 RavenDB 数据库用于重播,但是事件被发布并且处理程序在本地调用(不是通过 NServiceBus 等在外部排队)。EventPublisher 确实以异步方式发布事件(例如 Task.Factory.StartNew)。
有时我的事件有依赖关系(例如,必须先将 OrderReceived 事件处理到 ReadModel 中,然后才能将 OrderShipmentStatusUpdated 事件正确处理到 ReadModel 中)。
我该如何处理这种情况?使用传奇?如何在如上所述的简单内存模型中使用 Sagas?“推迟”一个事件是否被认为是可以接受的(也许将其标记为推迟并简单地尝试“偶尔”重新处理所有推迟的事件)?
有哪些应对策略?
谢谢你。