У меня есть очередь сообщений, которые я хотел бы прочитать. Рассмотрим следующий код, основанный на очереди 100 пунктов:Azure "заглянуть" в целую очередь?
queue.FetchAttributes();
var orderCount = queue.ApproximateMessageCount;
while(orderCount > 0)
{
var messages = queue.GetMessages(32,TimeSpan.FromMinutes(1));
if (messages != null)
{
foreach (var item in messages)
{
Order singleOrder = new JavaScriptSerializer().Deserialize<Order>(item.AsString);
PendingOrders.Add(singleOrder);
}
}
queue.FetchAttributes();
orderCount = (messages == null) ? 0 : queue.ApproximateMessageCount;
}
В этом случае, 3 вызовы будут сделаны «queue.GetMessages()», чтобы получить 96 сообщений, а затем 4-вызов с целью получения оставшееся 4. Затем цикл завершится и список возвращаемых элементов. Когда я запускаю это, он, кажется, поднимает одни и те же элементы снова и снова, то есть не увеличивается. У меня было впечатление, когда я читал элемент, он временно удалял его из очереди? Поэтому каждый раз, когда я читаю сообщение, он временно удаляется из моей очереди - в этом случае в течение 1 минуты. Я пропустил шаг? Примечание. Я не звоню в «DeQueue», так как я хочу, чтобы элемент возвращался в очередь через 1 минуту.