読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

Azure Service Bus キューをWindowsRuntimeから使う

MicrosoftAzure

Azure Service Bus キュー

Azure Service Busとはクラウドを利用したメッセージ配信基盤です。
クラウドに接続されたさまざまなデバイス間のメッセージの仲介役となることでさまざまなデバイス同士をつなげ、IoTなどで活躍します。

その中でもキューは比較的シンプルなService Busのサービスの一つで、簡単にいうとクラウド上にある先入れ先出しのキューです。

Azure Service Busの名前空間を作成する

Azure Service Busを使い始めるにはまず名前空間を作成する必要があります。
管理ポータルにアクセスし、Service Busをクリック→新規をクリックしましょう。

f:id:garicchi:20150102054815p:plain

名前空間名をいれ、作成します。

f:id:garicchi:20150102054836p:plain

名前空間を作成することができました。

キューを作成する

先ほど作成した名前空間をクリックし、キューを押します。
そして下にある新規ボタンからキューを作成します。

f:id:garicchi:20150102054952p:plain

簡易作成からキュー名を入れ、新しくキューを作成するを押します。

f:id:garicchi:20150102055028p:plain

キューを作成することができました。

接続文字列を取得する

キューに接続するには接続文字列を取得する必要があります。
先ほど作成したキューをクリックし、構成を見ます。
共有アクセスポリシーが空なので適当なアクセス名をいれます。

f:id:garicchi:20150102055130p:plain

アクセス許可は送信とリッスンにしましょう。
そして保存ボタンを押します。

f:id:garicchi:20150102055201p:plain

キュー一覧に戻って、下にある接続情報ボタンを押します。

f:id:garicchi:20150102055300p:plain

接続文字列が作成されているのでコピーしておきましょう。

f:id:garicchi:20150102055355p:plain

NugetからAzure Service Bus Clientを入れる

では実際にWindowsストアアプリからService Busキューを使うためにクライアントライブラリをインストールします。

Nugetで「azure messaging managed」と検索します。 Windows Azure Service Bus managed for Windows Store and Windows Phone 8をインストールします。

f:id:garicchi:20150102055556p:plain

キューから出し入れする

ライブラリをインストールできたら、実際にデータをキューに入れてみます。
Microsoft.WindowsAzure.Messaging名前空間のQueueクラスを使用します。
第一引数にはキュー名、第二引数には接続文字列を指定します。
SendAsyncメソッドでMessageを送信することができます。

var queue = new Microsoft.WindowsAzure.Messaging.Queue("nadejyuqueue", "Endpoint=sb://nasffd..(省略)");
await queue.SendAsync(new Microsoft.WindowsAzure.Messaging.Message("hogehoge"));

キューに入れたら実際に確かめてみましょう。

f:id:garicchi:20150102055930p:plain

キューの長さが1となっているため実際にデータが入っていることがわかります。

次にキューから値を取り出してみましょう。
データを取り出すときはReceiveAsyncメソッドを使用します。

var queue = new Microsoft.WindowsAzure.Messaging.Queue("nadejyuqueue", "Endpoint=sb://nasffd..(省略)");

string str=await queue.ReceiveAsync<string>();

実際にキューの長さを見てみると、0になっています。キューから値を取り出せたことがわかります。

f:id:garicchi:20150102060114p:plain