2つの集計を更新するコマンドがあります。集約ルートはトランザクション境界であるため、最初の集計でrepository.Save()アクションを実行し、次に2番目の集計で動作する別のコマンドを(最初のコマンドから)起動します。各Save()アクションは、Event-Storeトランザクションを開始し、変更をコミットしてからパブリッシュします。CQRS/EventStore - 2つの集約を変更する
最初は正しいですか。つまり、あるコマンドが別のコマンドで別の集合体に通知することはできますか?
Mark Nihjofのコードでは、同じイベントにイベントハンドラを登録することができて便利なイベントハンドラを使用していることに気付きました。私はJ OliverのEvent-Storeを使ってこれを試みましたが、IDispatchCommitの私のコミットは、2番目の処理時に最初の集計値を参照していました。これはいくつかの奇妙なエラーを引き起こした。
EventHandlersでこの作業を行う方法を見つけるか、コマンド内でコマンドを実行しても問題ありませんか?
JD
編集 - 私が使用しているが.UsingAsynchronousDispatchSchedulerを(使用するように私のワイヤーを切り替え)、現在登録されたイベントが、今度は他の集計上でコマンドを起動複数のイベントハンドラを起動することができていますし、それは動作するようです。それで、これを行う正しい方法であり、コマンダーのコマンドを使わないのですか?
ありがとうございました。週末には読書をします。では、最初の集約ルーツイベントハンドラから別のコマンドを起動できない場合、2番目の集計をどのように変更するのですか? –
なぜ両方のコマンドが同じコマンドに応答するのではないのですか? – iwayneo