我以辅助角色接收队列消息,但当我尝试将 BrokeredMessage
标记为完成时。我收到以下错误:
Client.OnMessage((receivedMessage) =>
{
try
{
FileContainer fileInfoObj = receivedMessage.GetBody<FileContainer>();
//Message processing code
receivedMessage.Complete();
}
catch
{
receivedMessage.DeadLetter();
}
});
The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue.
我错过了什么吗?
最佳答案
根据 Mike Z 的评论,设置 LockDuration (默认为1,最长可达5分钟)创建队列时防止超时。
QueueDescription qd = new QueueDescription("MyQueue");
qd.LockDuration = ...
if (!namespaceManager.QueueExists("MyQueue"))
{
namespaceManager.CreateQueue(qd);
}
此外,请使用 RenewLock防止它在长时间过程中超时:
receivedMessage.RenewLock()
关于c# - 将 Azure 队列 BrokeredMessage 标记为已成功处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25269001/