У меня есть вариант использования, в котором мне нужно поставить в очередь выбранное количество сообщений, когда текущая длина очереди падает ниже указанного значения. Поскольку я работаю в Azure, я пытаюсь использовать метод RetrieveApproximateMessageCount()
, чтобы получить текущее количество сообщений. Каждый раз, когда я вызываю это, я получаю сообщение об исключении StorageClientException: указанная очередь не существует.
. Вот обзор того, что я сделал:
Создал очередь на портале и успешно поставил в нее сообщения.
Создал учетную запись хранения на портале, и она находится в состоянии Created/Online.
Закодировал запрос следующим образом (с использованием параметров http и https):
var storageAccount = new CloudStorageAccount(
новый StorageCredentialsAccountAndKey(_messagingConfiguration.StorageName.ToLower(),
_messagingConfiguration.StorageKey), false);
var queueClient = storageAccount.CreateCloudQueueClient();
var очередь = очередьКлиент.ПолучитьСсылкуОчереди(имяочереди.ToLower());
интервал сообщений;
пытаться
{
messageCount = очередь.RetrieveApproximateMessageCount();
}
поймать (исключение)
{
//Бум!!!!! в любом случае
}
// ApproximateMessageCount всегда равен нулю
messageCount = queue.ApproximateMessageCount == null ? 0 : очередь.ApproximateMessageCount.Value;
Я подтвердил, что имя правильно написано без специальных символов, цифр или пробелов, и результирующий URL-адрес очереди
выглядит так, как будто он правильно сформирован на основе документации API ( , например http://myaccount.queue.core.windows.net/myqueue)
Может ли кто-нибудь помочь пролить свет на то, что я делаю неправильно.
РЕДАКТИРОВАТЬ
Я подтвердил, что с помощью MessageFactory
я могу создать QueueClient
, а затем успешно поставить/удалить сообщения из очереди. Когда я использую CloudStorageAccount
, очередь никогда не присутствует, поэтому процедуры подсчета и GetMessage никогда не работают. Я так понимаю это не одно и то же??? Предполагая, что я прав, мне нужно измерить длину очереди служебной шины. Это возможно?