こんにちは、結果整合性を取得する方法がわからない次のシナリオがあります。
- ユーザー 1 は、タスク ベースの UI を使用して顧客名を変更します
- アグリゲートでの App Service 呼び出し操作
- 顧客名が変更された場合のアグリゲート ファイア イベント
- bus は nservicebus を使用してメッセージを送信します
- NServicebus サービスの停止
- ユーザー 2 は集約を取得し、変更アドレスを呼び出します
- 呼び出された集計操作
- 発生したドメイン イベント
- バスに乗せられたメッセージ
- バスの再起動
- メッセージ 2 が最初にピックアップされました
- メッセージ 2 が処理され、その他の境界付きコンテキストが新しいアドレスで更新されました
- メッセージ 1 がピックアップされましたが、順序が間違っています
- 今、何が起きた
13 では、イベントで集約のバージョンを渡すと楽観的同時実行エラーが発生しますか?
その場合、Message 1 new が他のコンテキストのオブジェクトに適用されます。一貫性を維持するにはどうすればよいでしょうか。
これが、ドメインにイベントを適用することを妨げている問題です。すべてのヘルプ歓迎。
本質的なアイデアは、別のコンテキストで別の集約を更新することです。私はこれの並行性の技術にこだわっています。
コマンドハンドラやコマンドがバスにプッシュされるという意味で、イベントソーシングや CQRS は使用していません。変更したくない既存の設計があるため、非同期で発生させたいのはイベント処理だけです。
ブレア