2012-02-04 9 views
1

2つの集計を更新するコマンドがあります。集約ルートはトランザクション境界であるため、最初の集計でrepository.Save()アクションを実行し、次に2番目の集計で動作する別のコマンドを(最初のコマンドから)起動します。各Save()アクションは、Event-Storeトランザクションを開始し、変更をコミットしてからパブリッシュします。CQRS/EventStore - 2つの集約を変更する

最初は正しいですか。つまり、あるコマンドが別のコマンドで別の集合体に通知することはできますか?

Mark Nihjofのコードでは、同じイベントにイベントハンドラを登録することができて便利なイベントハンドラを使用していることに気付きました。私はJ OliverのEvent-Storeを使ってこれを試みましたが、IDispatchCommitの私のコミットは、2番目の処理時に最初の集計値を参照していました。これはいくつかの奇妙なエラーを引き起こした。

EventHandlersでこの作業を行う方法を見つけるか、コマンド内でコマンドを実行しても問題ありませんか?

JD

編集 - 私が使用しているが.UsingAsynchronousDispatchSchedulerを(使用するように私のワイヤーを切り替え)、現在登録されたイベントが、今度は他の集計上でコマンドを起動複数のイベントハンドラを起動することができていますし、それは動作するようです。それで、これを行う正しい方法であり、コマンダーのコマンドを使わないのですか?

答えて

2

私は、この猫を肌に触れる百万と一つの方法があると思います。私は、イベントハンドラからのコマンドを実行することが最善の方法であるかどうかはわかりません。この場合、ハンドラが同じコマンドに応答する必要があります。

私はdocumentlyが参考アプリに適しています。あなたはそれを見ましたか?

+0

ありがとうございました。週末には読書をします。では、最初の集約ルーツイベントハンドラから別のコマンドを起動できない場合、2番目の集計をどのように変更するのですか? –

+0

なぜ両方のコマンドが同じコマンドに応答するのではないのですか? – iwayneo

関連する問題