我正在开发一个基于 Azure 的项目以进行一些研究,并且在从 CloudQueue 实例中删除消息时遇到了一些问题。代码相当简单,所以当我尝试从队列中删除消息时为什么会引发异常,我有点困惑。
这是为队列生成数据的代码:
foreach (var cell in scheme(cells))
{
string id = Guid.NewGuid().ToString();
var blob = sweepItemContainer.GetBlobReference(id);
using (BlobStream stream = blob.OpenWrite())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(stream, cell);
}
sweepItemQueue.AddMessage(new CloudQueueMessage(id), new TimeSpan(1, 0, 0));
}
以下是使用队列中数据的代码:
var msgs = sweepItemsQueue.GetMessages(MsgAmt);
foreach (var msg in msgs)
{
_handleMessage(msg, sweepItemsContainer);
sweepItemsQueue.DeleteMessage(msg);
mergeItemsQueue.AddMessage(new CloudQueueMessage(msg.AsString), new TimeSpan(1, 0, 0));
}
我看不到消息如何不能存在于队列中。除了其他消费者之外,没有其他东西会改变队列。但我确信他们不能得到相同的信息(只要时间跨度没有用完),那么这是怎么发生的呢?