いくつかの調査のために 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));
}
メッセージがキューに存在できない理由がわかりません。他の消費者以外にキューを変更しているものはありません。しかし、彼らは同じメッセージを受け取ることができないと確信しています (タイムスパンが切れない限り)。