私たちは、空白のサービスバスを使用して、キューを待機しているワーカーによるメッセージの並列処理を容易にしています。Azureリクエストレスポンスセッションタイムアウト処理
最初に集約されたメッセージが受信され、このメッセージは、個別のプロセスを実行するためにすべてのメッセージがいつ完了したかを知る必要があるため、要求 - 応答パターンによってポストされた数千の個別メッセージに分割されます。
は、我々が処理されるべき1000件のメッセージを投稿するとしましょう、唯一の労働者のリスニングがある:
私たちの問題は、要求応答方法は、次の問題を引き起こしているタイムアウトを持っていることです。タイムアウト期限切れ後にキューに残ったメッセージは破棄されますが、これは不要なものです。すべてのメッセージが処理されることを保証する大きな値に有効期限を設定すると、メッセージが失敗し、何かが間違っていることを理解するためにタイムアウトを待たなければならないリスクが発生します。
リクエスト/レスポンスシナリオやその他の考慮すべきパターンにおいて、1つのメッセージの有効期限を動的に変更する方法はありますか?
ありがとうございます!
ご返信ありがとうございます。たぶん私は十分に問題を説明しなかったでしょう。私はメッセージのTTLを参照していません。 Azure Busは、リクエストとレスポンスを関連付けるために使用されるセッションをサポートします。 1つのキューで要求が行われ、別のキューで応答が提供されます。サンプル[MSDNのサンプル](https://code.msdn.microsoft.com/Brokered-Messaging-Request-0ce8fcaf)です。私はセッションが作成されるときに提供される必要がある実際のtimeourプロパティを参照しています。このタイムアウトに達してプロセッサがメッセージを受け取っていない場合、メッセージの応答は決してピックアップされません。 –
私の間違いは、正しいキューのTTLを使用するデッドレターキューに言及していました。 –
私の答えはあなたの問題を最後に解決しましたか? –