継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

【Developer試験勉強】SQSの勉強

タダです。

試験を受けるのは、6/27になりました。 前回がDynamo DBでしたが、今回はSQSについてです。

サービス概要

SQSは、メッセージキューサービス。 主に、アプリケーション連携で使う。

Visibility Timeout(可視性タイムアウト)

受信されたメッセージを一定時間受信できないようにする設定 Visibility Timeoutは、キューに設定された値が全てのメッセージに適用されるが、適宜時間を延長したり、 「0」にすることで解除もできる。

メッセージの順序

Queueに保存されたメッセージの取り出し順序はベストエフォートであり、保障されていない。 順序通りに取り出すためにはアプリ側で制御する必要がある。

同じメッセージを複数回受信する可能性がある。

少なくとも1回の配信。 メッセージは複数のサーバー/データセンタに保持。

Long Polling

一度のリクエストにおける待ち時間を設定するのが、Long Polling。

Short Polling

メッセージ受信後、すぐに応答が必要な場合は、Short Pollingを使う。 複数のキューを単一スレッドでポーリングスル場合、Long Pollingすると他のキューにアクセスできない。 ※基本は、Long Pollingが推奨(呼び出し元のCPU負荷、リクエスト課金等)で、 複数のキューを使う場合、マルチスレッドでPollingする。

Delay Queues(遅延キュー)

Queusに送信されたメッセージを一定時間経過後に受信可能にする機能。 Visibility Timeoutとの違いは、遅延キューは送信されてからのキューを受信可能にする時間を遅らせる点。

デッドレターキュー(Dead Letter Queues)

指定した回数受信したメッセージを別のキューに移動する機能。 処理が何らかの理由で失敗した場合、メッセージが滞留するが、それを別のキューに移動させる。 0~900secで設定できる

SQSの上限

1、メッセージ保持期限 削除されないメッセージはデフォルトで4日間保持 保持期間は、60sec ~ 14daysの間で変更可能

2、In Flight(受信されたメッセージ&Visibility Timeout内)メッセージ 1つのキューごとに最大120,000 In Flightメッセージ 超えるとOverLimitエラー

3、メッセージの最大サイズは、256KB