0

NServiceBusは、タイムアウトメカニズムを提供します。nservicebus.comから:

基本クラスのRequestTimeoutメソッドは、NServiceBusにメッセージを別のエンドポイントに送信するように指示します。このメッセージは永続的に時間を保持します...この機能の基本的な実装を提供するTimeoutManagerと呼ばれるNServiceBusに付属するプロセスがあります。

時間切れになると、Timeout Managerはメッセージをサガに送り返し、そのTimeoutメソッドが最初に渡されたのと同じ状態オブジェクトで呼び出されるようにします。

私が見ているように、メッセージが受信者に配信されたにもかかわらず、タイムアウトがトリガーされる可能性があります(たとえば、応答がどこかでスタックしました)。

メッセージが受信者に届いたかどうかに関係なく、アプリケーションが正しく動作するようにアプリケーションを設計するにはどうすればよいですか。

4

1 に答える 1

1

クライアントがサーバーにメッセージを送信してからタイムアウトを要求すると、要求の状態が保存されます。サーバーからの応答の前にクライアントがタイムアウトメッセージを受信した場合は、タイムアウトによって返された状態を現在の状態と比較し、サーバーが応答していないことを確認して、何をするかを決定できます。リクエストが無効になった場合は、返信を無視することができます。その場合は、サーバーメッセージの「TimeToBeReceived」属性を確認することをお勧めします。指定された時間内に受信できないメッセージを破棄します。

于 2010-09-17T15:45:47.023 に答える