現在のキューの長さが指定された値を下回ったときに、選択した数のメッセージをキューに入れる必要があるユース ケースがあります。私は Azure で実行しているので、RetrieveApproximateMessageCount()
メソッドを使用して現在のメッセージ数を取得しようとしています。これを呼び出すたびに、例外が発生しStorageClientException: The specified queue does not exist.
ます。これが私がやったことのレビューです:
ポータルでキューを作成し、キューへのメッセージを正常にキューに入れました。
ポータルでストレージ アカウントを作成し、Created/Online 状態にある
クエリを次のようにコーディングしました ( http および https オプションを使用):
var storageAccount = new CloudStorageAccount( new StorageCredentialsAccountAndKey(_messagingConfiguration.StorageName.ToLower(), _messagingConfiguration.StorageKey), false); var queueClient = storageAccount.CreateCloudQueueClient(); var queue = queueClient.GetQueueReference(queueName.ToLower()); int messageCount; try { messageCount = queue.RetrieveApproximateMessageCount(); } catch (Exception) { //Booom!!!!! in every case } // ApproximateMessageCount is always null messageCount = queue.ApproximateMessageCount == null ? 0 : queue.ApproximateMessageCount.Value;
名前の大文字と小文字が正しく区別され、特殊文字、数字、またはスペースが使用されていないことを確認しました。結果のURL は、API ドキュメント (例: http://myaccount.queue.core.windows.net/myqueue
queue
) に基づいて正しい形式で表示されます。 )
私が間違っていることに光を当てるのを手伝ってくれる人はいますか。
編集
MessageFactory
を使用してを作成し、QueueClient
メッセージを正常にエンキュー/デキューできることを確認しました。キューを使用するとCloudStorageAccount
、存在しないため、カウントと GetMessage ルーチンが機能しません。これらは同じものではないと思いますか?私が正しいと仮定すると、必要なのは Service Bus Queue の長さを測定することです。それは可能ですか?