在试图了解 CQRS(以及一般的 DDD)时,我遇到了两个事件发生在不同聚合上但它们的顺序具有领域意义的情况。如果是这样,那么它们可能发生得如此紧密,以至于时间戳(正如我所看到的示例实现所使用的)无法区分它们,这意味着事件存储不包含域的“完整”表示,因为顺序存在歧义其中发生的事件。
例如,域可以触发一个CustomerCreatedEvent
应用于Customer
聚合的事件,然后在聚合上触发一个CustomerAssignedToAgent
事件Agent
。如果事件发生在 之前,则该CustomerAssignedToAgent
事件没有意义CustomerCreatedEvent
,但通常这两者都可能由于一个操作而被触发,这使得时间戳可能实际上是相同的。
那么我只是在建模不好吗?是否应该存在跨不同聚合的事件顺序很重要的情况?或者您应该在事件存储中保留一个全局序列号,以便您可以识别事件发生的确切顺序?