はじめに
Windows Azure Storage Services は Blob・Table・Queue の3種類のデータを扱え、StorageClient ライブラリを使ってアクセスします。
StorageClient ライブラリはサンプルとして Windows Azure SDK に付属しており、まだ正式にリリースされていません。
今回は Queue を試してみます。
下準備として QueueStorage オブジェクトを作成
コード
// QueueStorage 用のアカウント情報を取得 StorageAccountInfo account = StorageAccountInfo.GetDefaultQueueStorageAccountFromConfiguration(); // QueueStorag にアクセスするオブジェクトを作成 QueueStorage queueService = QueueStorage.Create(account); queueService.RetryPolicy = RetryPolicies.RetryN(2, TimeSpan.FromMilliseconds(100));
MessageQueue を作成
コード
queueService.GetQueue("sample1").CreateQueue(); queueService.GetQueue("sample2").CreateQueue(); queueService.GetQueue("hoge1").CreateQueue();
全ての MessageQueue を列挙
コード
foreach (var q in queueService.ListQueues()) { Console.WriteLine(q.Name); }
実行結果
hoge1 sample1 sample2
名前が sample で始まる MessageQueue を列挙
コード
foreach (var q in queueService.ListQueues("sample")) { Console.WriteLine(q.Name); }
実行結果
sample1 sample2
MessageQueue を取り出して Message を追加する
コード
MessageQueue queue = queueService.GetQueue("sample1"); queue.Clear(); // 中身を空にする queue.PutMessage(new Message("<sample>sample message.</sample>"));
Message の自動受信
コード
MessageQueue queue2 = queueService.GetQueue("sample2"); queue2.Clear(); queue2.PollInterval = 500; queue2.MessageReceived += delegate(object sender, MessageReceivedEventArgs e) { Console.WriteLine("Received message : " + e.Message.ContentAsString()); }; // 自動受信開始 queue2.StartReceiving(); for (int i = 0; i < 10; i++) { queue2.PutMessage(new Message( string.Format("<sample>{0}</sample>", i))); Thread.Sleep(1000); } // 自動受信終了 queue2.StopReceiving();
実行結果
Received message : <sample>0</sample> Received message : <sample>1</sample> Received message : <sample>2</sample> Received message : <sample>3</sample> Received message : <sample>4</sample> Received message : <sample>5</sample> Received message : <sample>6</sample> Received message : <sample>7</sample> Received message : <sample>8</sample> Received message : <sample>9</sample>
MessageQueue を全て削除
コード
foreach (var q in queueService.ListQueues()) { q.DeleteQueue(); }
まとめ
QueueStorage クラスを利用すれば簡単に Windows Azure Storage Services の Queue にアクセスできそうです(今回試したのは Development Storage ですが…)。