Очереди хранилища Azure - подсчет видимых сообщений

У меня есть распределенное приложение, которое разделяет нагрузки с очередями службы хранилища Azure. Чтобы убедиться, что все работает хорошо, я написал небольшое приложение, которое запускается каждые 10 минут и проверяет, сколько элементов находится в очереди. Если число превышает пороговое значение, отправьте мне уведомление.

Вот как я бегаю по всем очередям:

Dictionary<string, int> dic = new Dictionary<string, int>();
foreach (CloudQueue queue in QueuesToMonitor)
{
    queue.FetchAttributes();
    dic.Add(queue.Name, queue.ApproximateMessageCount.HasValue ? queue.ApproximateMessageCount.Value : -1);
}

Этот код работает нормально, но он также считает скрытые сообщения. Я хочу исключить эти сообщения из подсчета (потому что эта задача не готова к выполнению).

Например, я проверил одну из своих очередей и получил ответ, что в очереди находится 579 элементов. Но на самом деле там нет видимых элементов. Я проверяю это с помощью обозревателя хранилища Azure:  0 из 579

Как я могу подсчитать только видимые элементы в очереди?


person No1Lives4Ever    schedule 21.03.2017    source источник


Ответы (1)


Короткий ответ на ваш вопрос заключается в том, что вы не можете подсчитать только видимые сообщения в очереди.

Приблизительное количество сообщений даст вам приблизительное количество сообщений в очереди и будет включать как видимые, так и невидимые сообщения.

Одна вещь, которую вы могли бы сделать, это PEEK at messages, и она вернет вам список видимых сообщений. Однако он вернет вам максимум 32 сообщения из очереди. Таким образом, логика отправки уведомления будет работать, если порог меньше 32.

person Gaurav Mantri    schedule 21.03.2017
comment
Это плохие новости. Peek не решит проблему, потому что я использую порог в 5000+ сообщений. Итак, как Azure Storage Explorer извлекает информацию? это делает это довольно хорошо. - person No1Lives4Ever; 21.03.2017