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