nservicebusのタイムアウトを正しく処理します
-
03-10-2019 - |
質問
NServiceBusはタイムアウトメカニズムを提供します。から nservicebus.com:
基本クラスのRequestTimeoutメソッドは、NServiceBusに、私たちのために時間を維持する別のエンドポイントにメッセージを送信するように指示します...この機能の基本的な実装を提供するTimeout Managerと呼ばれるNServiceBusに付属するプロセスがあります。
時間が経つにつれて、タイムアウトマネージャーはメッセージをサガに送り返し、元々渡された同じ状態オブジェクトでタイムアウトメソッドを呼び出します。
私が見るように、メッセージが受信機に配信されているにもかかわらず、タイムアウトがトリガーされる可能性があります(たとえば、返信はどこかに貼り付けられました)。
メッセージが受信機に届いたかどうかに関係なく、アプリケーションが正しく動作するようにアプリケーションを設計するにはどうすればよいですか。
解決
クライアントがサーバーにメッセージを送信してからタイムアウトを要求すると、リクエストの状態が保存されます。サーバーからの返信の前にクライアントがタイムアウトメッセージを受信した場合、タイムアウトによって返された状態を現在の状態と比較し、サーバーが返信していないことを確認し、何をすべきかを決定できます。リクエストが有効でない場合は、返信を無視する場合があります。その場合、サーバーメッセージの「TimetObereCeeved」属性を確認することができます。指定された時間に受け取れないメッセージを捨てます。
所属していません StackOverflow