今回の発表により、キューイングのクラウドサービスであるSimple Queue Serviceに新しい機能を追加しました。
注: SQSをご存じない方のために、簡単にSQSを説明させて頂きますと、SQSでは各リージョン - 東京、米国東など5エリア- に対して、キューという入れ物を作成することができ、そのキューに対してメッセージを送信できます(Send)。メッセージはキューの中にスタックされます。このメッセージを処理する必要があるプロセスがメッセージを読み込むと(Recieve)、キューは他のプロセスが同時に処理できないように、一定期間見えなくなります(Visibility Timeoutとして設定できる)。そのプロセスが処理を成功すると、メッセージを削除します(delete)。万が一、アプリが処理に失敗すると、削除されないままなので設定したVisibility Timeoutの後にメッセージが他のプロセスから再度見えるようになる、というからくりです。このSQSを用いることで、複数のアプリケーションの非同期処理を効率よく行えます。このキューは、他のAWSユーザーと共有することもできますし、IPアドレスや時間で制限することもできます。
まず、今回の発表により、このSQSのキューの送信にバッチ処理を利用できるようになりましたので、メッセージ群の送信、削除が、非常に効率よく低コストで実現できます。また、特定のキューを遅延キュー(delay queue)に設定して、送信されたメッセージがキューの中で見えるようになるまで遅延を設定することができます。また、各メッセージに対しても、メッセージタイマーを用いることで遅延をセットできます。
バッチ処理
新しいSendMessageBatchとDeleteMessageBatch関数を用いると、一度に10メッセージまで処理することができます。各メッセージの最大サイズは64 KB (65,536 bytes)まで使えますが、一つのバッチでは、合計で64KBを越えないように気をつけてください。バッチ処理を用いると、アプリケーションとAWS間のネットワーク上のやり取りが少なくなるので、効率があがるでしょう。また、一つのリクエストあたりで処理できるメッセージ数が増えるので、コスト効率も高まります。
遅延キュー
遅延キューというものを作成できます。この遅延キューには遅延時間を設定することができます。つまり、メッセージを作成すると、キューのメッセージは遅延時間の分だけ遅れて見えるようになります。例えば、120秒の遅延を設定すると、そのキューに対して、ポストされたメッセージは120秒後に見えるようになります。
メッセージタイマー
各メッセージに対して、遅延を設定することができます。例えば、0秒、60秒、120秒、180秒など、各メッセージ毎に自由に遅延を設定できます。各メッセージの送信の際に(SendMessage関数 or SendMessageBatch関数)、DelaySeconds属性を利用することで遅延を設定できます。
コンソールのサポート
AWS Management Console (Webコンソール)は、今回発表した遅延キューやメッセージタイマーをサポートしています。 遅延キューを作成するには、"Delivery Delay"をゼロ以外の数値に設定します。最大15分の遅延を設定できます。
Clik here to view.

既存のキューに対しても、デリバリー遅延 (Delivery Delay) を設定、編集することができます。
Clik here to view.

各メッセージを送信する際に、遅延を設定することが可能です。最大5分まで設定できます。
Clik here to view.

キュー、メッセージの遅延も自在にコントロールできるようになったので、またさらにSQSの利用範囲が拡がったと思います。面白い利用方法などありましたら、是非お報せください!
玉川憲 (@KenTamagawa)