文字通り 5 時間試してみた結果、Azure アカウントに問題があり、一度に複数のキューを操作できないことがわかりました。
もちろん、小文字の 2 つの名前を持つ 2 つのキューを作成することから始めます。次に、それらが存在するかどうかを確認し、それらの uri 名も確認します。問題ないようです。
次に、最初のキューにメッセージを追加し始めました。これは正常に機能します。キューに含まれるメッセージの数を確認すると、0 より大きい数値が返されます。
次に、まったく同じ手順を繰り返して 2 番目のキューにメッセージを追加しますが、今度はメッセージの数を確認しようとすると、0 とは言えず、null がスローされます。
2 番目のキューから getMessage() を使用すると、null メッセージも返されます。つまり、追加したメッセージは実際には 2 番目のキューのストレージに送られません。
アカウントによる制限はありますか?複数のキュー パーティションを同時に動作させるには、azure で別の設定を行う必要がありますか?
事前にご回答いただきありがとうございます..
編集
WCF の私のクラスのトップは次のように定義されています。
private static CloudQueue processedqueue;
private static CloudQueue notprocessedqueue;
これは私の InitializeStorage メソッドです:
var queue1 = account.CreateCloudQueueClient();
notprocessedqueue = queue1.GetQueueReference("notprocessedqueue");
notprocessedqueue.CreateIfNotExist();
var queue2 = account.CreateCloudQueueClient();
processedqueue = queue2.GetQueueReference("processedqueue");
processedqueue.CreateIfNotExist();
//I have tried using queue1 to get the reference of both queues but is the same result
キューを満たすメソッド:
var message = new CloudQueueMessage(string.Format("{0},{1}", pWord, processed.ToString()));
var message2 = new CloudQueueMessage(string.Format("{0},{1}", pWord, processed.ToString()));
processedqueue.AddMessage(message);
notprocessedqueue.AddMessage(message2);
processedqueue.Exists() <- Returns true
processedqueue.Uri.ToString() <- returns a proper URL with the name I defined in the getReference method
notprocessedqueue.Exists() <- Retruns true
notprocessedqueue.Uri.ToString() <- returns a proper URL with the name I defined in the getReference method
addMessage メソッドを実行した後、次のことを試します。
processedqueue.ApproximateMessageCount <- returns 1
notprocessedqueue.ApproximateMessageCount <- returns null