【发布时间】:2016-05-16 05:26:52
【问题描述】:
使用 DDD、CQRS 和事件溯源时,可能会重新发送消息或乱序发送消息。
我不太关心命令消息,因为用户会立即知道它是否成功。我关心的是事件。如果将聚合版本号附加到事件中,我们可以使操作幂等吗?例如:
class Person {
public function apply(PersonNameUpdated event) {
if (version_ + 1 != event.version) {
name_ = event.name;
++version_;
}
}
private String name_;
private Integer version_;
}
【问题讨论】:
-
从您的事件存储中读取事件时,它们应该已经按照正确的顺序以及正确的版本号。在这种情况下,这种检查不是多余的吗?也许您可以扩展您所面临的问题。
标签: domain-driven-design cqrs event-sourcing idempotent