我有一個我想閱讀的消息隊列。考慮下面的代碼的基礎上,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分鐘後返回隊列。