0

新しい azure SDK は、visibilitytimeout を <= 7 日間に延長しているようです。デフォルトでは、Azure キューにメッセージを追加すると、ライブ タイムは 7 日間です。メッセージが表示されたら、visibilitytimeout を 7 日に設定します。メッセージの信頼性を気にしないのであれば、このメッセージを削除する必要はないということですか? メッセージは 7 日後に消えます。

DeleteMessage は非常に遅いため、この方法を採用したいと考えています。メッセージを削除しないと、GetMessage のパフォーマンスに影響はありませんか?

4

2 に答える 2

1

のドキュメントに基づいて、期間を 7 日間Get Messagesに設定して、メッセージが 1 回だけ取得されるようにすることは確かに可能だと思います。VisibilityTimeoutただし、プロセスが完了したらメッセージを削除するだけでなく、このアプローチにはいくつかの問題があります。

  • メッセージを受け取って処理を開始し、何らかの理由で処理が失敗した場合はどうなりますか? 可視性タイムアウトを 7 日に設定すると、メッセージがキューに再び表示されることはなく、本来の処理が完了しません。
  • メッセージが非表示になっていても、キューに残っているため、そのメッセージのストレージ料金が発生し続けます。コストはわずかですが、本当に必要ないのにメッセージを保持する必要はありません。
  • Approximate Messages Count多くのシステムは、キュー内のメッセージによって実行されるプロセスの状態をチェックするために、キューのプロパティに依存しています。メッセージを非表示にしても、メッセージはまだキューにあるため、キュー内の総メッセージ数に含まれることに注意してください。したがって、ヘルス チェックをこれに依存するシステムを構築している場合、メッセージを削除することは決してないため、常にシステムが異常であることがわかります。

メッセージの削除が非常に遅いと感じる理由を知りたいです。私の経験では、これは非常に高速です。メッセージの削除をどのように監視していますか?

于 2013-12-22T12:03:21.863 に答える