DVAAWSのサービスを使用した開発
SQS(Simple Queue Service)キューからメッセージを取得して処理するEC2上のワーカーアプリケーションがあります。現在はショートポーリング(WaitTimeSeconds=0)を使用しており、CloudWatchのメトリクスを確認すると空レスポンス(メッセージなし)が全体の約80%を占め、ReceiveMessageのAPIコスト増大と不要な処理負荷が問題になっています。最小限のコード変更でコストを削減する方法はどれですか?
ASQSキューを標準キュー(Standard Queue)からFIFOキュー(FIFO Queue)に変更して順序保証を有効にする
FIFOキューは順序保証・重複排除のための変更であり、ポーリングコストとは無関係です。
BReceiveMessage APIのWaitTimeSecondsパラメータを最大20秒に設定してロングポーリングを有効にする
✓ 正解
SQSのロングポーリングはReceiveMessageのWaitTimeSecondsを1〜20秒に設定することで有効化されます。キューが空の場合でも設定時間まで待機してからレスポンスを返すため、空レスポンス数とAPIコール数が大幅に減少しコスト削減につながります。
Cメッセージの可視性タイムアウト(VisibilityTimeout)を延長して処理中の重複受信を防ぐ
可視性タイムアウトは同一メッセージの重複処理を防ぐためのパラメータです。
Dキューにデッドレターキュー(DLQ:Dead Letter Queue)を設定して処理失敗メッセージを自動退避する
DLQは処理失敗メッセージの退避先です。
解説
SQSのロングポーリングはReceiveMessageのWaitTimeSecondsを1〜20秒に設定することで有効化されます。キューが空の場合でも設定時間まで待機してからレスポンスを返すため、空レスポンス数とAPIコール数が大幅に減少しコスト削減につながります。
選択肢AのFIFOキューは順序保証・重複排除のための変更であり、ポーリングコストとは無関係です。
選択肢Cの可視性タイムアウトは同一メッセージの重複処理を防ぐためのパラメータです。
選択肢DのDLQは処理失敗メッセージの退避先です。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →