NI+CでSoftLayerエンジニアをしている常田です。
SoftLayerでは以前より好評頂いている「ObjectStorage」がありますが、同様に「Message Queue」についてもAPI含めサービス提供しています。
今回は、数回に分けてCliやAPIを利用して簡単なMessage Queueについての動作を紹介したいと思います。
Message Queue サービス
メッセージ・キューサービスは、非同期通信プロトコルです。送信側がキューに対して「メッセージ」を送信し、受信側でメッセージを受診することが出来ますがこの際に送信側、受信側が同時にやりとりをしなくてもよい仕組みとなっています。SoftLayerのMessage Queueサービスでは、「メッセージ」は64Kbyteまで取り扱うことが出来ます。
メッセージのやりとりには大きく2つ存在しており1つは「キュー」となりもう一つは「トピック」です。2つとも同じようにメッセージをやりとりしますがキューは送信側と受信側が1対1の関係に対してトピックは1対他の関係を持ちます。
キュー
- 受信側がキューを取りに行きます。
- キューは取得された後に一定時間が経つと再度キューのリストに登場します。したがって必要があればメッセージの削除を受信側で行う必要があります。
- キューは、キューサービスに登録された順に取得されます。
トピック
- トピックの場合には、送信側がメッセージをキューに送ると自動的に受信者(サブスクライブ)に送信されます。
- この際にhttpのPOSTで送信が行われます。
- HTTPで送信できるので例えばRESTで受信できるサービスに直接通知することも可能です。
いつ使うの?
クラウドのシステムデザインでシステム間を疎結合に作るための1つの方法はこのようなキューでシステムをつなげることで実現することが出来ます。各処理間のデータのやり取りやステータスをメッセージとしてキューに入れていくことでスケールし易い仕組みを作ることも出来ます。
用途としては、リアルタイムに処理をしなくても良い「処理」等をプログラムから分離することも考えることが出来ます。例えばログへの記録などの処理は全てキューに送信してしまえば本来の処理を軽減することが出来ます。(キューに溜まったログは別途別のプログラムで取得して書き出すようにすれば良い)
同様に、バッチ処理などの時間がかかる処理も、処理のリクエストをキューにいれバッチ処理プログラムがキューを読み取り順次処理をすることで本来の処理側のインタラクティブ性を向上させることも考えられますね。
料金
SoftLayerのメッセージ・キューサービスは以下のとおりです。Notificationなトピックで送信されるメッセージに該当します。費用はて非常に低額で出来ていますので是非活用をしていただければとおもいます。
* http://www.softlayer.com/jp/message-queue
オーダの仕方
- 管理ポータルの「Service」から「Message Queue」を選択肢ます。
- 左上の「Order Message Queue」をクリックします。
- ロケーションはダラスを選択し、購入を行います。
- 購入が正常に行われるといかのような画面が表示されます。表示されているのはキューのアカウント名となります。それぞれクリックすると詳細情報が表示されます。
- 詳細画面では、認証などで利用する「Credentials」情報や、どのSLアカウントが利用できるかを設定する画面が提供されています。
参考ドキュメント
- Message Queue API | SoftLayer Development Network
- Message Queue | KnowledgeLayer
- SoftLayer Development Network
- 7.1 キューを使ったバッチ連携
最後に
次回以降で、slcli等を利用して簡単にキューの出し入れをしたりトピックを利用してサービスへの通知を実装してみたいと思います。