Azureキューストレージに対して溜まっているメッセージ数を調べる方法

こんにちは。日山(@hiiyan0402)です。


Azureキューストレージに対して溜まっているメッセージ数を調べる方法

ライブラリ(C#)を使って確認する方法です。ライブラリのバージョンは3.0以降を対象としています。

using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;

// 指定したキューのメッセージ数を返すメソッド
int GetQueueMessageCount(string storageAccountName,
                         string storageAccountKey,
                         string queueName)
{
    var credentials = new StorageCredentials(storageAccountName, storageAccountKey);
    var account = new CloudStorageAccount(credentials, true);
    var client = account.CreateCloudQueueClient();
    var queue = client.GetQueueReference(queueName);

    queue.FetchAttributes();     // これ重要
    return queue.ApproximateMessageCount.Value;
}

CloudQueueインスタンスのApproximateMessageCountプロパティの値(int)が、蓄積メッセージ数にあたるのですが、このプロパティを参照する前に、FetchAttributesメソッドを呼ぶのが重要。
そうしないと、ApproximateMessageCountプロパティの値が”null”のままです。

このFetchAttributesメソッド、Queue以外にも使います。


BLOBのプロパティを参照する時にもFetchAttributesメソッドを呼び出す

using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;

// 指定したBLOBの最終更新日時を返すメソッド
DateTimeOffset GetBlobLastModifiedDate(string storageAccountName,
                                       string storageAccountKey,
                                       string containerName,
                                       string blobName)
{
    var credentials = new StorageCredentials(storageAccountName, storageAccountKey);
    var account = new CloudStorageAccount(credentials, true);
    var client = account.CreateCloudBlobClient();
    var container = client.GetContainerReference(containerName);
    var blob = container.GetBlockBlobReference(blobName);

    blob.FetchAttributes();     // やっぱり重要
    return blob.Properties.LastModified.Value;
}

BLOBのプロパティ情報は、CloudBlockBlobインスタンスのPropertiesにあたります。
これも、FetchAttributesメソッドを呼び出さないと、Propertiesが持つほとんどのプロパティが”null”のままになります(LastModifiedプロパティなど)。

TechTarget

クラウドエンジニア  日山 雅之による記事「Microsoft Azure スマート解説」がTechTarget Japanにて好評連載中です (全7回)