私は JOliver の EventStore を使用していますが、今のところ同期ディスパッチャーを使用しているため、コマンドが着信すると、コマンド ハンドラーによって処理され、イベント ストアに保存され、イベント ハンドラーが読み取りモデルを更新します。この段階では NServiceBus を使用していませんが、後で導入したいと考えています。私の eventstore データベースと readmodel は同じマシン上にあります。
私が気付いたのは、イベント ハンドラーで例外が発生した場合 (また、DTC を使用していないため)、イベントがイベントストアでコミットされ、ディスパッチ フラグが false に設定されることです。これは私が予想したことですが、サーバーを再起動すると、フラグは true に設定されますが、イベント ハンドラー コードは呼び出されません。
なぜこれが起こっているのですか?
ディスパッチされていないイベントはディスパッチされるか、イベント ストア コードに何らかの再試行メカニズムがあると想定しました。