7

あるイベントによって作成され、座って数時間待って、何も起こらない場合はコマンドを送信するサガが必要だったとしましょう。

さて、この佐賀がすべてメモリ内にあり、アプリ/サーバーを再起動する必要がある場合、佐賀はアンロードされ、二度と表示されませんよね?

システムがオンラインに戻ったら、イベントソーシングを使用してこの佐賀を高速化できますか?

もしそうなら、私のSagasをスピードアップするために、システムの起動時に再生できる「アクティブなsagas」を備えたかなり別のイベントストアが必要になります。これまでのところ、それは私には良いように思えますが、タイムアウトをどのように実装しますか?

佐賀に入るイベントに応じて、いくつかの後続のタイムアウトがある可能性があることを考慮して、再生時にタイムアウトを「偽造」する何らかの方法が必要になります。

4

1 に答える 1

7

この機能を実現する最善の方法は、特定の時点でメッセージを返すことができる別のエンドポイントを使用することです。たとえば、あなたのサガはこの「タイムアウトマネージャー」にメッセージを送信し、1時間または1日、さらには1年で私を起こしてくださいと言うかもしれません。その時点でメッセージが返されます。理想的には、このメッセージには、アクションを発生させるビジネス上の意味があります。

おそらく、これの最も良い例は、顧客のサインアップのようなものです。顧客がサインアップから7日以内にアカウントを確認しなかった場合は、電子メールで通知します。「タイムアウトメッセージ」は事実上、RemindUserToConfirmAccountMessageになります。このメッセージが7日後にサガによって受信されると、サガは現在の状態に基づいて、そのメッセージを処理する必要があり、顧客の電子メールを送信する必要があるかどうかを判断します。ただし、ユーザーがすでに自分のアカウントを確認している場合は、何もせずにメッセージを破棄できます。

于 2011-10-11T01:20:27.183 に答える