私はSQS Queue
複数のホストがメッセージを読み取る場所。キュー内のすべてのメッセージが処理された後、いくつかのジョブ(ビジネスロジック)を実行したいと思います。
キューが空であることを確認するにはどうすればよいですか?
はい、ApproximateNumberOfMessages
およびApproximateNumberOfMessagesNotVisible
キュー属性を確認できますが、これらは概数です。メッセージが残っていないときにホストがキュー内のメッセージをポーリングするのを停止してから、必要なジョブを実行したいと思います。
何か案は?ありがとう
ポーリング中に、API応答からの空の受信に注意するだけで済みます。 CloudWatchに関しては、これにより適した別のメトリックがあります。 ドキュメント から:
NumberOfEmptyReceives
メッセージを返さなかったReceiveMessageAPI呼び出しの数。
単位:カウント
有効な統計:平均、最小、最大、合計、データサンプル(Amazon SQSコンソールにサンプルカウントとして表示されます)
いくつかの追加情報:
私は個人的にこのメトリックスを使用して、NumberOfEmptyReceives> 0の合計が数期間連続した後、ポーリングジョブをホストする自動スケーリンググループをスケールダウンするクラウドウォッチアラームを設定しました。キューが空であるだけでなく、空のままであることがより明確になるため、連続した期間を実行するのが好きです。
キューの深さに関連するクラウドウォッチメトリックでポストビジネスロジックをトリガーできます。深さが0の場合、SNS通知を送信するか、ラムダ関数を開始できます。
また、これはsqsサービスによって報告される実際のメッセージ数であるため、このクラウドウォッチメトリックは他のメトリックよりも優れています。