佐賀が作成される前に公開されたイベントに基づいて意思決定が行われる場合、佐賀をどのように処理するかについて質問があります。
これが私の問題を説明するための例です:
CustomerARとOrderARがあると想像してください。customerARが作成されると、検証プロセスが開始され、そのプロセスの結果は、顧客が特別な許可なしに自由に使用できる注文の金額になります。このプロセスは文脈から外れているため、ここでは詳しく説明しません。金額が計算されると、コマンドが計算された金額でCustomerARに送信され、CustomerARはその値でイベント(CustomerMaxOrderAmountEvent)を公開します。ここまでは順調ですね。
それから数週間後、顧客は注文をします。OrderARが作成され、OrderSagaが起動します。sagaは、注文が完全に作成されるまで待機してから、その注文に対してAutorizationCommandを送信する必要があるかどうかを判断する必要があります。その決定を行うには、CustomerMaxOrderAmountEventが公開されているかどうかと金額の値を知る必要があります。通常、OrderSagaはCustomerMaxOrderAmountEventもサブスクライブしますが、問題は、過去にすでに発生していたため、このイベントが発生しないことです。
これにどう対処すればいいですか。読み取りモデルにクエリを実行して値を確認する必要があります。コマンドを送信して値を取得する必要があります。CustomerARを参照する必要があります。また、佐賀のすべての履歴イベントを再生して、彼がすでに履歴を認識している必要があります。
アップデート
これは、この具体的な例ではなく、概念に関するものであることに注意してください。この例は、問題を明確にするためのものです。「同じ境界コンテキストの一部ではない、関連のない2つの集約ルート」。
助けてくれてありがとう。
メルビン