2012-03-14 8 views
1

Jolivers EventStoreを使用してc#で冪等性を実装/処理する。これは、処理する前にドメイン/リードモデルの横にある集計IDとバージョンをチェックするだけですか?それともそれ以上のことはありますか?CQRS/EventStore Idempotency?

[EDIT]

私が求めている理由は、私は、例えば、小さな機能チャンクに私のアプリを開発したいということです。

私はオンラインストアの商品データを持つタイプのデータセットを持っているとします。私は、製品を検索する機能を作成することによって、このアプリケーションの開発を開始したいと考えています。何らかの形でデータセットをインポートすることです(どのように関係なく)。データセット内の各製品は最終的にCreateProductCommandを起動します。このコマンドはProductAddedEventを起動するドメインを通過し、次に非正規化器によって処理されてProductSearchViewに代入されます。

Now - 検索機能の実装後、製品詳細ビューを作成します。私はすでにシステムにデータセットを取得するためにインポートを実行していますので、非正規化器を起動してProductDetailViewを起動するイベントを再実行したい

それは意味がありますか?

+0

正確に同じコマンドを2回処理していないのですか? –

答えて

4

あなたができることは、読まれたモデルのデータストアをきれいにし、最初に公開されたのと同じメカニズムを使ってイベントストア内のすべてのイベントを実行することです。

私は展開プロセスの一歩としてこれを行うために別のことを使用しています。

var commits = eventStore.Advanced.GetFrom(DateTime.MinValue).ToList(); 

その後、私は、リストを反復処理し、私が使用するのと同じコードの多くを使用して、読み取りモデルにイベントをディスパッチ:私は時間の初めからすべてのイベントを取得するイベントストアのインスタンスを使用して

彼らが通常派遣されたとき。

これは基本的にそれです。

これをたくさんする必要があるため、これを簡単にするために何かを作成する必要があります。

+0

私はレイヴンの新しいインスタンスを起動することができます、それにストリームし、私は推測するスイッチ? – iwayneo

+0

これはイベントを再生して既存のデータを壊すのではなく "理想的"ではありません。新しいものに取り組むのが理想的でしょう。 – iwayneo

+0

既存のデータはイベントストアにあります。それをそのままにしておけば、読んだモデルで何でもできます。 –