我有一个我想阅读的消息队列。考虑下面的代码的基础上,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分钟后返回队列。