0

私はイベント ソーシングが初めてで、イベント ストリームからのオブジェクトの再構築について少し混乱しています。

オブジェクトの状態を再構築するには、発生したすべてのイベントを時系列でロードする必要があると思います。たとえば

オブジェクトと呼ばれる顧客がいる場合。

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

顧客が名前を 2 回変更した場合、イベント ログにイベントが 2 回保存され、イベントをオブジェクトに再構築すると、イベントが 2 回取得されます。最後のイベントを再実行しないように、前のイベントを取得するか、イベントをアーカイブする必要がありますか?

4

2 に答える 2

3

両方のイベントを Customer オブジェクトに再適用します。それらを時系列で適用するため、Customer オブジェクトは正しい現在の状態になります。現在の状態を表していない、適用されているイベントの数が気になる場合は、スナップショットを確認する必要があります。

于 2012-05-28T09:31:12.807 に答える
1

オブジェクトを再構築するときは、そのオブジェクトのイベント ストリーム全体を処理します。パフォーマンスに関しては、これは通常、多数のイベントであっても問題になりません。これは、ローリング スナップショットを使用して軽減できます。

スナップショットを使用すると、イベント ストリームの特定の時点でのオブジェクトの状態を保存できます。再構築とは、そのスナップショットと、スナップショットが作成された後に発生したイベントを単純にロードすることです。

于 2012-05-28T09:33:29.423 に答える