QueueStrage お試し

はじめに

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 ですが…)。