我有一个用例,当当前队列长度低于指定值时,我需要将选定数量的消息排队。由于我在 Azure 中运行,我正在尝试使用该RetrieveApproximateMessageCount()
方法来获取当前消息计数。每次我打电话给这个我都会得到一个例外说明StorageClientException: The specified queue does not exist.
。这是对我所做工作的回顾:
在门户中创建了队列并已成功将消息排队。
在门户中创建了存储帐户,它处于已创建/在线状态
将查询编码如下(使用 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;
我已经确认名称的大小写正确,没有特殊字符、数字或空格,并且生成的
queue
Url 看起来好像它是根据 API 文档正确形成的(例如http://myaccount.queue.core.windows.net/myqueue )
任何人都可以帮助阐明我做错了什么。
编辑
我已经确认使用MessageFactory
我可以成功创建一个QueueClient
然后入队/出队消息。当我使用CloudStorageAccount
队列时,队列永远不会出现,因此计数和 GetMessage 例程永远不会起作用。我猜这些不是一回事???假设我是对的,我需要测量服务总线队列的长度。那可能吗?