maya's blog

About programming, aws and ubuntu

AWS SQS Tutorial

docs.aws.amazon.com

AWS認定Developer - associateの模擬試験でSQSの問題が幾つか出題された。 SQSは触ったこともなくドキュメントを読むだけではイメージがつかなかったので、↑のAWS公式のチュートリアル(のようなもの)をさらってみた。

キューの作成

create FIFO queue

SQSでのキューには標準キューとFIFOキューの2種類がある。 標準キューはqueueの順序を考慮しない。 FIFOキューはqueueされた順序を考慮して、dequeueされる。

標準キュートFIFOキューの違いについてはクラスメソッドのブログが分かりやすかった。

dev.classmethod.jp

2018/12/22時点ではドキュメントにはFIFOキューは東京リージョンは対応してないと書いてあった。

注記

FIFO キューの名前は .fifo サフィックスで終わる必要があります。 FIFO キューは、米国東部(バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、および 欧州 (アイルランド) リージョンで使用できます。

現状は東京リージョンでもFIFOキューは作成できる。 このドキュメントが追従できてないだけか。 AWS頑張ってくれ。

ってかAWSのブログにはちゃんと書いてあるんだな。

aws.amazon.com

create FIFO queue2

キュー作成時に詳細設定もできる。 可視性タイムアウト(後述)やメッセージの保存期間等。 今回はお試しなので、全てデフォ値のまま。

メッセージの送信

sending message

AWS Management Consoleから先程作成したqueueにメッセージを送ってみる。

input message

  • メッセージの本文
  • メッセージグループID
  • メッセージ重複排除ID

を入力する。

sent message

メッセージ送信完了すると

  • メッセージ識別子
  • メッセージMD5
  • シーケンス番号

が表示される。

メッセージの表示

select show and delete message

show and delete message

初回はこんな画面が表示される

polling

「メッセージのポーリングを開始」ボタンを押すと、下の進行状況バーが動き出す。

同時に可視性タイムアウト(Visibility Timeout)中にもなり、この時間内では他のコンシューマー(ここではdequeueする人)が同じメッセージの受信と処理することはできない。

(ref: Amazon SQS 可視性タイムアウト - Amazon Simple Queue Service)

メッセージのロックみたいなもんなのかな?整合性を保つためとか。

ちなみにこの可視性タイムアウトはデフォで30秒間。

メッセージの削除

delete message

可視性タイムアウト中のみ削除可能。

キューの削除

delete queue

後始末。

最後に

ちょくちょくわからん単語が出てくるが、ひとまずそれらを抑えておけば大丈夫かな。