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