Windows Azure Storage、Queue編
Azureでのデータの永続化には、TableやQueue、Blobなどが用意されているらしいです。
とりあえず、TableとQueueを使ってみようかと。
今回はQueueの使い方をメモしておきます。
1・AzureServiceDeveloperPortalでStorageAccoutを作成する。
Storage Account NameがUrlのサブドメインとして使われます。
以下はVisualstudioのCloudProjectでの作業になります。
2・ServiceDefinition.csdefを設定する。
<Setting name="AccountName"/> <Setting name="AccountSharedKey" /> <Setting name="UsePathStyleUris" /> <Setting name="QueueStorageEndpoint" /> <Setting name="TableStorageEndpoint" />
を追加する。
3・ServiceConfiguration.csftを設定する。
AccountNameのvalue属性に、1で指定したAccoutNameを入力。
AccoutSharedKeyに、Storageプロジェクトに表示されるPrimaryAccessKeyを入力。
EndPointにそれぞれのAccoutNameを除いたUrlを入力。
例・
<Setting name="AccountName" value="アカウント名"/> <Setting name="AccountSharedKey" value="キー"/> <Setting name="UsePathStyleUris" value="false" /> <Setting name="QueueStorageEndpoint" value="http://queue.core.windows.net"/> <Setting name="TableStorageEndpoint" value="http://table.core.windows.net"/>
4・StorageClientプロジェクトをソリューションに追加。
http://www.microsoft.com/azure/trainingkit.mspx
TraningKitをインストールすれば
C:\AzureServicesKit\Labs\UsingWindowsAzureTables\Assets
などにあるStorageClientをソリューションに追加すると便利です。
5・Queueを使うコードを記載します。
Queueを追加する。(String)
StorageAccountInfo accountInfo = StorageAccountInfo.GetAccountInfoFromConfiguration("QueueStorageEndpoint"); QueueStorage service = QueueStorage.Create(accountInfo); MessageQueue queue = service.GetQueue("messages"); if (queue.DoesQueueExist() != true) { queue.CreateQueue(); } Message msg = new Message("メッセージ"); queue.PutMessage(msg);
Queueを見る(String)
StorageAccountInfo accountInfo = StorageAccountInfo.GetDefaultQueueStorageAccountFromConfiguration(); QueueStorage service = QueueStorage.Create(accountInfo); MessageQueue queue = service.GetQueue("messages"); if (queue.DoesQueueExist()) { Message msg = queue.GetMessage(); if (msg != null) { string value = msg.ContentAsString(); } }
Queueを削除する
StorageAccountInfo accountInfo = StorageAccountInfo.GetDefaultQueueStorageAccountFromConfiguration(); QueueStorage service = QueueStorage.Create(accountInfo); MessageQueue queue = service.GetQueue("messages"); if (queue.DoesQueueExist()) { Message msg = queue.GetMessage(); if (msg != null) { queue.DeleteMessage(msg); } }
とりあえず、dotwowのThumbnailServiceの一部をcloudで提供してみた。
http://dotwow.cloudapp.net/thumbnail.aspx?url=http://yahoo.com
urlの部分を変更すれば、そのページのサムネイルを取りに行きます。
メインのサービスはnetTcpBindingをbasicHttpBindingにするのがめんどくさいな・・・