扱う内容
・SQS
・SNS
【SQS】
キューの種類
SQSには2種類のキューがある。作成時に選択し、作成後の変更は不可能
標準キュー
メッセージの処理順序はガン無視して処理するパターン
処理順序の関係がないおかげで、スループットは高い
FIFOキュー
必ず古いメッセージから処理するパターン
標準キューより優れているが、金がかかる
ポーリング
キューからメッセージを取得するには、データの送信要求としてポーリングを実施する
ショートポーリング
問い合わせ後、メッセージがあればメッセージを返し、なければ即座に「おめーのメッセージねーから」というレスポンスを返す
ロングポーリング
問い合わせ後、メッセージがあればメッセージを返し、ない場合は、指定した時間を待って、それでもなおメッセージがない場合に「おめーのメッセージねーから」というレスポンスを返す
可視性タイムアウト
SQSでは、以下の流れでメッセージの取得から削除までが行われる
①キューにメッセージが追加される
↓
②アプリがメッセージを取得し、メッセージの通りに処理を行う
(この時点で、メッセージはまだキューに残っている)
↓
③アプリが処理を終えたら、キューに対して、取得したメッセージの削除依頼を出す
↓
④キューがメッセージを削除する
アプリなどのクライアントがメッセージを取得してから削除依頼を出すまでの間に、そのメッセージがほかのクライアントから見えないようにする設定がある。これを可視性タイムアウトという(デフォルトでは30秒)
これは、メッセージが見えてしまっていることによって、処理中に別のクライアントがそのメッセージを取得しないようにするためのもの
ただし、可視性タイムアウトが短いと、処理中にタイムアウトが終了し、本来消さなきゃいけないはずのメッセージを別のクライアントが取得してしまう恐れがあるので、処理時間に合わせて可視性タイムアウトの時間も設定する必要がある
デッドレーターキュー
エラーが一定の回数に達したメッセージを隔離するキュー
遅延キューとメッセージタイマー
遅延キューまたはメッセージタイマーは、メッセージの送信者が、送ったメッセージを一定時間経過後に受信させたい場合に使用する
○時間後に受信するようにする、など
遅延キューはキュー全体に作用し、メッセージタイマーは特定のメッセージに対して作用する
キューへのアクセス
キューにアクセスするには、SQSアクセスポリシー、IAMポリシー、またはその両方にアクセス許可を設定する必要がある