0

我是事件溯源的新手,我对从事件流中重建对象有点困惑。

我相信我们需要按时间顺序运行加载所有发生的事件以重建对象状态。所以例如

如果我有一个名为客户的对象。

Public class Customer
{
   public void Correctname(string firstName,string lastName)
    {
        CustomerNameChanged(new nameChangedEvent(firstName,lastName);
    }
}

如果客户更改了两次名称,我们将在事件日志中存储两次事件,当我将事件重建为对象时,我将获得两次事件。是否需要采取上一个事件或归档事件,以便我们不再重新运行最后一个事件

4

2 回答 2

3

您可以将这两个事件重新应用到 Customer 对象。因为您按时间顺序应用它们,所以 Customer 对象将处于正确的当前状态。如果您担心应用的事件数量不再代表当前状态,您应该查看快照

于 2012-05-28T09:31:12.807 回答
1

重建对象时,您处理该对象的整个事件流。就性能而言,这通常不是问题,即使对于大量事件也是如此。您可以通过使用Rolling Snapshots来缓解这种情况。

使用快照,您可以将对象的状态存储在事件流的特定点。重建只是加载快照+拍摄快照后发生的事件。

于 2012-05-28T09:33:29.423 回答