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

Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

ベースはやっぱりREST API

Azure Queue

Managed APIを使ってStorageを操作していると、どうもRESTで
あることを忘れがちなんですけど、RESTだよということを理解
してないと、アレって思うことがあります。(って自分だけかも)

例として、メタデータの設定API

サンプルは、以下の動作をしていますが、結果は取得できません。

  • workキューを作成して、SetMetdata
  • 再び、workキューのインスタンスを作成してMetadataをアクセス
    var queueClient = account.CreateCloudQueueClient();
    var queue = queueClient.GetQueueReference("work");
    queue.CreateIfNotExist();
    
    // メタデータの設定
    queue.Metadata.Add("a", "abc");
    queue.Metadata.Add("b", "efg");
    queue.Metadata.Add("c", "hij");
    queue.SetMetadata();

    var queue2 = queueClient.GetQueueReference("work");
    Console.WriteLine ("a = " + queue2.Metadata.Get("a"));
    Console.WriteLine ("b = " + queue2.Metadata.Get("b"));
    Console.WriteLine ("c = " + queue2.Metadata.Get("c"));

ご覧の通り。


a =
b =
c =

これは、キューへのリファレンスクラスを作っただけ何で、この
時点では何もクラウド側とは通信していないから、情報が取得
できないのは、あたりまえなんですよね。

でも、ローカルなリソースをアクセスすることになれていると、
設定した情報が入っていなくてアレ?と思いがち。
(自分だけかも)

結局は、FetchAttributeすると、クラウド側にアクセスにいって
Attribute/Metadataあたりのデータが設定されるわけです。

    var queue2 = queueClient.GetQueueReference("work");
    queue2.FetchAttributes();


a = abc
b = efg
c = hij