それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Amazon SQSってなんに使うんだろう

よくわからないのでとりあえず、説明読んでみた。
Amazon_SQS

Amazon SQS Functionality

amazon SQS の機能

  • Developers can create an unlimited number of queues, each of which can store an unlimited number of messages.
  • サイズ無制限のキューを使うことが出来て、キューにはサイズ無制限でメッセージを格納できる
  • New messages can be added to a queue at any time. The message body can contain up to 256 KB of text in any format.
  • キュー内のメッセージはいつでも追加可能。1メッセージは256kbまで格納可能。形式はテキスト。
  • A computer can check a queue at any time for messages waiting to be read.
  • クライアントは待ち行列をいつでも読み出し可能
  • A message is "locked" while a computer is processing it, keeping other computers from trying to process it simultaneously. If

processing fails, the lock will expire and the message will again be available.

  • クライアントが読み出したキューは「ロック」される。他クライアントもキューを円滑に分担処理できるように。処理が失敗したら、ロックが開放され読み出し可能になる。
  • Developers can access Amazon SQS through standards-based REST, SOAP and query interfaces designed to work with any

Internet-development toolkit.

  • REST/SOAPベースでキューにアクセスできる。ウェブ開発向き。
  • The queue creator determines which other users can write to or read from the queue.
  • キュー作成者は他ユーザーにRead/Write権限を付与することが出来る。

キューはロックされることがミソ

複数のコンピューターで待ち行列を共有するから、キューを読み出し中はほかコンピューターからの読み出しをロックする。このへんが分散対応ってことかな。読み込み専用権限と書き込み権限で分けられる。これは、処理結果をメッセージに保存することを想定しているのかも。

キュー基本操作

使い方からもうすこし見てみる。

Basic Queue Operations

The Amazon Simple Queue Service employs a simple interface that is easy to use and highly flexible. The following operations are
provided:

  • CreateQueue: Create queues for your own use, or to share with others.
  • ListQueues: List your existing queues.
  • GetQueueAttributes: See information about a queue like the number of messages in it.
  • DeleteQueue: Delete one of your queues.
  • SendMessage: Add any data entries to a specified queue.
  • ReceiveMessage: Return one or more messages from a specified queue, which are returned in roughly the same order it was added to

the queue.

  • DeleteMessage: Remove a message from a specified queue.
  • PeekMessage: Return a specific entry from the queue without locking it.
  • SetQueueAttributes: Control queue settings like the amount of time that messages are locked after being read so they cannot be read

again.

  • ChangeMessageVisibilty: Alter the amount of time that a message remains locked from being read again.
  • AddGrant: Allow other users to send messages to or receive messages from your <<

AmazonSQSは簡単で柔軟性のあるAPIを採用。以下の操作を参照すること

  • CreateQueue: キューの作成。独自キューの作成と共有。
  • ListQueues:自分の(作った?)キューの一覧を取得。
  • DeleteQueue: 自分の(作った?)キューを削除
  • SendMessage: 目的のキューにデータを追加。
  • ReceiveMessage: 目的のキューから、ひとつないしは複数のメッセージを取り出し。追加順とほぼ同順に取り出す。
  • DeleteMessage: 目的のキューからメッセージをひとつ削除
  • PeekMessage: キューから(先頭?)メッセージをひとつとりだすが、ロックはしない。
  • SetQueueAttributes: キュー設定を変更。キューの読出し後から自動解放までのロック時間変更など
  • GetQueueAttributes: キューの状況を閲覧、キューにたまったメッセージの総数とか

queue.

  • ChangeMessageVisibilty: メッセージ単位で自動解放までの残り時間を変更
  • AddGrant: 自分の(作成した?)キュー内メッセージの権限を変更

Amazon SQS Message Lifecycle

Messages that are stored in Amazon SQS have a lifecycle that is easy to manage but ensures that all messages are processed.

  1. A system that needs to send a message will find an Amazon SQS queue, and use SendMessage to add a new message to it.
  2. A different system that processes messages needs more messages to process, so it calls ReceiveMessage, and this message is

returned.

  1. Once a message has been returned by ReceiveMessage, it will not be returned by any other ReceiveMessage until the visibility

timeout has passed. This keeps multiple computers from processing the same message at once.

  1. If the system that processes messages successfully finishes working with this message, it calls DeleteMessage, which removes the

message from the queue so no one else will ever process it. If this system fails to process the message, than it will be read by
another ReceiveMessage call as soon as the visibility timeout passes.

AmazonSQSに保存されるメッセージはライフサイクルをもっています。これにより管理を簡略化しています。簡略化していますが一方で処理を確実なものにしています。

  1. Messagesを利用するシステムは、AmazonSQSのキューをさがし、SendMessageをつかって新規messageを追加します。
  2. A different system that processes messages needs more messages to process, so it calls ReceiveMessage, and this message is

returned.

  1. 複数のシステムがメッセージを処理する場合、ReceiveMessageをつかってメッセージを取得します。
  2. ReceiveMessageをつかって取得したメッセージは、他システムからロックを解放されるか、タイムアウトするまで、取得することが出来ません。他システムで同じ処理を同時にしないために保護されます。
  3. If the system that processes messages successfully finishes working with this message, it calls DeleteMessage, which removes the

message from the queue so no one else will ever process it. If this system fails to process the message, than it will be read by
another ReceiveMessage call as soon as the visibility timeout passes.

  1. システムがメッセージ処理したら、そのシステムがDeleteMessageをつかってキューを削除します。キューからメッセージが削除され、他システムがメッセージを処理することは出来ません。システムがメッセージ処理に失敗した場合、タイムアウト後すぐにメッセージがReceiveMessageで取得できるようになり、処理が可能になります。

*