SQSに新機能が登場しました。
今回追加されたのは、大きく分けて下記のの2つになります。

  • メッセージの一括送信、削除
  • キューとメッセージの遅延送信

先程発表されたので、早速試してみました。

○キューとメッセージの遅延送信

遅延送信機能はコンソールから確認することができます。
はじめに、キューの遅延送信設定を確認してみます。
コンソールのSQSから「Create New Queue」ボタンでキューを作成します。

キューを作成すると、下記のキュー設定ダイアログが表示されます。
赤枠の部分に「Delivery Delay」という項目があり、ここで最大15分まで遅延時間を設定することができます。
例として、遅延時間を45秒に設定すると、このキューで送信したメッセージはデフォルトで
送信後45秒後から受信可能になります。

次に、そのキューで「SendMessage」をしてみると、下記のようなメッセージ送信ダイアログが表示されます。
赤枠のように、メッセージでも個別に遅延時間を設定でき、デフォルトでは、キューで設定した遅延時間が
セットされています。
何も設定せずに送信すると、キューの遅延設定時間で遅延し、ここで別の時間にセットすると、
その時間だけ遅延します。

今回は3分に設定して、メッセージ送信してみます。

ここで、「Queue Action」から「View/Delete Messages」を選択すると、
キューのメッセージ一覧ダイアログが表示され、
「Start Polling Messages」を数回押してみますが、設定した時間内(3分以内)ではメッセージが受信されません。

3分経過すると、先程のメッセージが受信されます。
メッセージ情報のSentとFirst Receivedの間が3分以上空いているのが確認できます。

また、メッセージダイアログで何も設定せずに送信すると、キューで設定した45秒間は受信できず、
45秒経過後に受信されるようになります。

このようなメッセージの遅延は、仕様やアプリケーションの他の処理との兼ね合いなどで必要になる場合があるので、
バッチなどのバックエンド処理には重宝しそうです。

○メッセージの一括送信、削除

APIにSendMessageBatchとDeleteMessageBatchという関数が用意されました。
これは、メッセージの送信、削除を同時に10メッセージまで操作できるようです。
ただし、通常のSendMessageなどは1つのメッセージ容量が65KBまででしたが、
この一括送信では10個で65KBまでという制限があるようです。
この機能の利点は、10個までのメッセージの操作を1リクエストで行えるため、
リクエストごとの課金を抑えることができます。

現時点(2011/10/21 18:00)では、メッセージの一括送信、削除の機能は、APIまでの対応でSDKでは
まだサポートされていないようです。

SQSのAPIリファレンス

こちらは、SDKがサポートされたらまた報告したいと思います。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら