Facility集約ルートのリストを含むかなり単純なドメイン モデルがあります。ドメインから発生したイベントを処理するために CQRS とイベント バスを使用している場合、セットの検証をどのように処理できますか? たとえば、次の要件があるとします。
Facilityには固有の名前が必要です。
クエリ側で最終的に整合性のあるデータベースを使用しているため、イベント プロセッサがイベントを処理する時点で、データベース内のデータが正確であるとは限りません。
たとえばFacilityCreatedEvent、クエリ データベースのイベント処理キューで、処理されてデータベースに書き込まれるのを待機しています。新規CreateFacilityCommandが処理されるドメインに送信されます。ドメイン サービスは読み取りデータベースにクエリを実行して、その名前で既に登録されている他の があるかどうかを確認しますが、まだ処理されておらず、ストアに書き込まれていないFacilityため、false を返します。CreateNewFacilityEvent新しいものCreateFacilityCommandは成功しFacilityCreatedEvent、イベント プロセッサがそれをデータベースに書き込もうとしてFacility、その名前の別のものが既に存在することを発見すると爆発する別のものをスローします。