2 つの別個のサービスにデプロイされた 2 つの集約があるとします。集約 2 は、集約 1 のイベントをリッスンします。
集計サービス 2 を長時間停止した場合、見逃したすべてのイベントを回復するにはどうすればよいですか?
- 集計 1 イベント ストアから見逃したすべてのイベントを取得しますか?
- アグリゲート 1 にすでに多くのイベントが蓄積されている場合はどうなるでしょうか。アグリゲート 2 はアグリゲート 1 のスナップショットを使用できますか?
2 つの別個のサービスにデプロイされた 2 つの集約があるとします。集約 2 は、集約 1 のイベントをリッスンします。
集計サービス 2 を長時間停止した場合、見逃したすべてのイベントを回復するにはどうすればよいですか?
集計 1 イベント ストアから見逃したすべてのイベントを取得しますか?
はい、これは一般的なアプローチです。インフラストラクチャ レベルでは、最後に確認されたシーケンス番号を記憶し、それ以降のイベントがプッシュされるように要求できます。
アグリゲート 1 にすでに多くのイベントが蓄積されている場合はどうなるでしょうか。アグリゲート 2 はアグリゲート 1 のスナップショットを使用できますか?
ここでの答えは、おそらくそうではありません。両者がスナップショットを共有できる場合は、最初に集約境界が正しいかどうかを再検討する価値があるかもしれません。ただし、これは集計 1 からのフィードの性質に大きく依存します。実際に問題が発生して必要になる場合を除き、通常はこれを避けます。
1) 集計 1 イベント ストアからすべての見逃したイベントを取得しますか?
はい。
2) アグリゲート 1 にすでに多くのイベントが蓄積されている場合。アグリゲート 2 はアグリゲート 1 のスナップショットを使用できますか?
はい。
ただし、一貫性よりも分断耐性を優先する非常に切断されたコンテキストでは、集約 2 によって処理されるすべてのイベントに対して補償アクションを調整する必要があります。実際、集約 2 によって処理されたイベントが、アグリゲート 1 からイベントを適切に受信していました。