読み込みモデルは、イベントログと同期しなくなったとき、どのように、状況に対処するには?
-
26-09-2019 - |
質問
集合体のスナップショットは、イベントログと同期してなったとき、私は単純に(同期することになって)早期のスナップショットからの私のイベントを再生することができます。私は既存のハンドラのロジックを変更したときに、私は追加/新しいフィールドを削除する場合や、同じことを行うことができます。
の場合、私は再び同じことを行うことができ、新たな読み取りモデル(すなわち、新しいレポートビュー)を追加する必要があります - 私は私のイベントを再生します。
。しかし、どのように私は読んモデルがイベントログと同期していなった状況を、処理する必要がありますか?イベントや出版の保存1つのトランザクションであるが、読み取りモデルの更新が失敗する可能性が別のトランザクションで発生しました。非常に始まる缶のヘルプからイベントを繰り返し、それが永遠を取ることができます。私は全体の読み取りモデルのスナップショットの概念が必要ですか?
どのようにこの問題を解決するのですか? ありがとうございます。
解決
何がイベントハンドラに失敗の理由でしょうか? "永遠"?
はどのくらいです ロジック内部は非常に簡単であるため、を読んモデルの更新はめったに、(コマンドハンドラとは違って)失敗しません。障害は、可能性のある一時的な問題(IO /ネットワークの停止)によって引き起こされると、メッセージ・バスによって自動的に処理されます。
読み取りモデルが何らかの理由で破損した場合は、しかし、その後、最も簡単な方法は、それをリセットすることを通してイベントをストリーミングします。イベント百万ものは時間の合理的に少量を取るだろう。プラス、あなたは常に地図-削減のアプローチを使用することができます。
私は、モデルを読み取るために、スナップショットを導入に対して推薦します。私は、これはただの大幅な向上なしアーキテクチャが複雑だと思います。