Windows Azure AppFabric Service Bus の新機能 Queue と Topics の紹介 ~ クラウド カバー Episode 47
前回から少し間が空きましたが、今回も Channel 9 のコーナー Cloud Cover のエピソード紹介。
Wade はしばらくお休み、、、ということで、今回は Steve Marx と MVP の Brent Stineman の2人のナビゲーションでショーが開始です。
今回は Windows Azure AppFabric の機能(サービス)の一つである Service Bus における新機能、Queue (キュー)と Topic です。
まずは本題に入る前に、ニュースから。
◆ AzureWatch - Autoscaling a Windows Azure Hosted Service
MVP の Neil Mackenzie が、Windows Azure の監視と管理を手伝ってくれるサービス “Azure Watch” を紹介しています。
Windows Azure の Diagnostics API (診断API)を使用して Azure のインスタンス稼働状況を監視しながら、Service Managermrn REST API によってインスタンス数の最適化を行うというものです。
◆ New Windows Azure Service Management API Features Ease Management of Storage Services
Windows Azure Service Management API に新しい機能が追加されました。
実は収録のタイミングではまだ API の解説情報が更新されていなかったのですが、その後更新されたこちらの Blog エントリにて、新しいドキュメントの紹介も行われていますので参照ください。
◆ Fujitsu Launches Global Cloud Platform Service Powered by Microsoft Windows Azure
日本人として嬉しいニュース、富士通による Windows Azure を利用したクラウドサービス “Fujitsu Global Cloud Platform FGCP/A5 Powered by Windows Azure” が8月から開始されることになりました!
日本マイクロソフトからも、同内容でのプレスリリースが行われています。この FGCP/A5 開始により、日本国内のデータセンターを利用しながらも、一時間当たり五円という価格(XS相当サーバー。予定価格)で Windows Azure を利用いただくことが可能になります。
素晴らしい♪
CodePlex において、Azure の Startup Task 実行をコンフィギュレーションファイルを通じて定義できる Startup Task Runner が公開されています。
Azure 上で Java を動かしたり、Ruby で遊んだりするために、バッチを書いてばかりいる Steve にとっても嬉しいニュースだったようです :-)
◆ Windows Azure Pricing Calculator
Windows Azure のサービス利用に関して、ざっくりした価格を、さっくりと計算してくれる Web ページの紹介です。
なお、日本では一足早く、さっくり計算できる「Windows Azure 見積もりシミュレーター」を公開しています。ぜひご利用くださいませ。
◆ Windows Azure SDK for PHP v3.0 Released
Web において影響力のある言語 PHP 向けの Windows Azure SDK の最新バージョン 3.0 がリリースされています。こちらも CodePlex にて公開されています。
ではいよいよ本題の Queue と Topic の紹介。
AppFabric Service Bus において追加された Queue は、既存の Windows Azure Storage における Queue と何が違うのか。
一つは順序性。 AppFabric Service Bus では、キューが受け取ったメッセージを、受け取った順に処理する(FIFO: First In First Out)ことができます(Azure Storage のキューは、ベストエフォートな FIFO)。また、キャパシティモデル、API ライブラリ等に違いがあり、Azure Storage のキューより豊富な機能をを持っています。
では概要をつかむため、ホワイトボードに移動!
AppFabric Service Bus のキューでは、”Topic” と組み合わせることで、通常のキューに勝る機能を利用いただくことができます
Topic を使用する際には、各トピックに対して複数の Subscriber を接続することが可能になります。この場合、各 Subscriber
に対して、AppFabric Service Bus が受け取ったメッセージが転送されます。また、各 Subscriber は複数の Reciver と接続することができます。この場合、Subscriber は接続されている Reciever に対して、受け取ったメッセージを順番に転送します。つまり処理モデルとしては、Reciever は同じ動作をするインスタンスであればよく、その数を動的に増減することが可能になります。
また、各 Subscriber においてはメッセージのフィルターを行うことも可能です。
では、いよいよデモ。コードを見ながら確認しましょう。
今回の Cloud Cover で使用されれているコードですが、Brent の Blog エントリから Windows Live Skydrive上に置いたコードへのリンクがありますので、そちらから入手ください(なお、Windows Azure AppFabric SDK CTP をインストールください)。また、今回利用する AppFabric Service Bus は AppFabric Labs で申し込みいただけます)
Cloud Cover では、この後 Steve と Brent による解説が続きますが、実際に試される場合は以下のような手順で準備ください。
(1) AppFabric Labs で新しい Namespace を作成し、しばらく待つと、以下のように Default Key の情報が表示されます(今回は “cloudcover” という Namaspace を作成)。
(2) この Defult Key で表示される “Default Issuer” と “Default Key” (ならびに Namespace )の情報を、Brent の Windows Live Skydrive からダウンロードしたコードの該当箇所(例えば、EventPublisher プロジェクトの WorkerRole.cs など)にコピーします。
(3) プロジェクトを実行すると Worker Role が2インスタンス立ち上がり、メッセージをキューに投げ込み始めます。
(4) 実際にキューからメッセージを取り出すために、Monitor プロジェクトで新しいデバッグ用のインスタンスを立ち上げます。
(5) すると、順次メッセージを受け取り始めます。
(6) 次に、もう一つ Monitor プロジェクトのインスタンスを立ち上げると、、、、
2つのインスタンスが仲良くメッセージを処理し始めます。
基本的な AppFabric Service Bus の Queue および Topic の使用方法は Cloud Cover (あるいはコード)でご確認ください。
最後に、Subscriber におけるフィルタリングについて。
Monitor プロジェクトの Program.cs に、フィルタリングを有効にするコードが用意されています。以下のようにコメントアウトされている該当箇所を有効にし、実行すれば、、、、
今回設定したフィルタリング(instanceID=1)に基づき、instance ID が0のものがフィルタされ、instance ID 1 のメッセージのみ受信できるようになります。
ということで、今回の Queue & Topic 紹介は終了! Tip of the Week です!
今回紹介されたのは、AppFabric Service Bus において、Access Control をどのように使用するかを紹介した Clemens Vasters によるオーディオ Podcast 「Securing Service Bus with ACS (podcast)」 です。Service Bus と Access Control の組み合わせにより、Queue に対しても、Access Control を使用したアプリケーションを作成することが可能になります。
以上で、クラウド カバー Episode 47、Windows Azure AppFabric Service Bus の新機能 Queue と Topics の紹介は終了です。
それでは!