Amazon Simple Queue Service

Amazon Simple Queue Service (Amazon SQS) は、2004年後半にAmazon.comによって導入された分散型メッセージキューイングサービスで、Amazon Web Servicesで提供された初のサービスでもある。インターネットを介して通信する手段として、Webサービスアプリケーションを介したプログラムによるメッセージの送信をサポートしている。 SQSは、共通の生産者-消費者問題または生産者と消費者間の接続に起因する問題を解決する高度にスケーラブルなホストメッセージキューを提供することを目的としている。

Amazon SQSは、メッセージングサービスの商品化として表現できる。 よく知られているメッセージング・サービス技術の例には、IBM WebSphere MQとMicrosoft Message Queuingがある。これらのテクノロジーとは異なり、ユーザーは独自のサーバーを保守する必要はない。 AmazonはSQSを実行し、SQSサービスを使用率ごとに販売している。

 API 
Amazonは、Java、Ruby、Python、.NET、PHP、Javascriptなどのいくつかのプログラミング言語でSDKを提供している。 Amazon SQSのJava Message Service（JMS）1.1クライアントが2014年12月にリリースされた。

 認証 
Amazon SQSは、データの安全な処理を可能にする認証手順を提供している。 AmazonはAmazon Web Services（AWS）のIDを使用してこれを行い、ユーザーにはAmazon.comのAWS対応アカウントを要求する。 これはhttp://aws.amazon.comで作成できる。 AWSは、AWS対応のアカウントに、AWSのアクセスキーである関連するIDのペアを割り当てて識別を実行する。 最初の識別子は、パブリック20文字のアクセスキーであり、このキーはユーザーを識別するAWSサービス要求に含まれている。 ユーザーがWS-SecurityでSOAPを使用していない場合、40文字のプライベートIDである秘密鍵を使用してデジタル署名が計算される。 AWSは、サービスリクエストで提供されたアクセスキーIDを使用して、アカウントの秘密鍵をルックアップする。 Amazon.comはその鍵でデジタル署名を計算する。一致した場合、ユーザーは本物とみなされ、そうでない場合、認証は失敗し要求は処理されない。

 メッセージ配信 
Amazon SQSは、少なくとも一度の配信を保証する。 メッセージは複数のサーバーに格納され、冗長性と可用性を確保している。 サーバーが利用できないときにメッセージが配信される場合、そのサーバーのキューから削除されず、再送信される可能性がある。 Amazon SQSは、受信者が送信者によって送信された順序でメッセージを受信することを保証していない。 メッセージの順序付けが重要な場合は、配信後に並べ替えを可能にするために、アプリケーション内で順序情報をメッセージ内に配置する必要がある。

メッセージはどのような種類のものでもよく、その中に含まれるデータは制限がない。 メッセージ本文は最初はサイズが8KBに制限されていたが、2010年7月1日に64KBに、2013年6月18日に256KBに引き上げられた。 サイズが大きいメッセージの場合、ユーザーはこの制限を回避するためのいくつかの選択肢が存在する。 大きなメッセージは、別々に送信される複数のセグメントに分割することも、SQSメッセージで送信されるデータへのポインタだけを使用してAmazon Simple Storage Service (Amazon S3) またはAmazon DynamoDBを使用してメッセージデータを格納することもできる。 Amazonはこの目的のために拡張クライアントライブラリを提供している、

このサービスは、無制限のキューとメッセージトラフィックの両方をサポートしている。

 メッセージ削除 
SQSは、受信したメッセージを自動的に削除しない。 メッセージが受信されると、その配信用に受信ハンドルが生成され、受信者に送信される。これらの受信ハンドルは、メッセージとともに送信されるのではなく、それに加えて送信される。 SQSでは、受信者がメッセージを削除するために受信ハンドルを指定する必要がある。 この機能は、メッセージの削除にメッセージIDだけが必要だった2008年に追加された新しい機能である。 システムが分散されているため、メッセージは複数回受信することがあり、そのたびに異なる受信ハンドルを受け取る。この場合、メッセージを削除するには最新の受信ハンドルの指定が必要である。

メッセージが配信されると、他のコンポーネントがそのメッセージを処理するのを防ぐために、メッセージの可視性タイムアウトが設定されている。 可視性タイムアウトのカウントは、メッセージを受信すると開始される。デフォルトの時間は30秒であり、この時間中にキューを削除するようにDeleteメッセージが呼び出されない場合、メッセージは再び表示され、再度受信される。

各キューは、デフォルトで4日間の保持パラメータで構成されている。 キューにそれより長くあるメッセージは、自動的にパージされる。 保存期間は、ユーザーが1分から14日まで変更可能であり、メッセージがすでにキューに入っている時に保持が変更された場合は、新しい保持期間を超えているメッセージはパージされる。

 著明な利用 
Dropbox、Netflixhttp://techblog.netflix.com/2011/04/more-like-this-building-network-of.html及びNextdoorhttps://engblog.nextdoor.com/nextdoor-taskworker-simple-efficient-amp-scalable-ac4f7886957bはSQSを広く使用している企業の例である。SQSはAmazon内で広く使われている。

 関連リンク 
 Java Message Service
 IronMQ
 Message queue
 Message Queuing as a Service
 StormMQ

 脚注 

 外部リンク 
 Amazon Simple Queue Service homepage
 ElasticMQ - replicated message queue implementing the Amazon SQS interface

Simple Queue Service
Category:プロセス間通信
Category:メッセージ指向ミドルウェア