我收到了工作角色的队列消息,但是当我尝试将BrokeredMessage
标记为完成时。我得到以下错误:
Client.OnMessage((receivedMessage) =>
{
try
{
FileContainer fileInfoObj = receivedMessage.GetBody<FileContainer>();
//Message processing code
receivedMessage.Complete();
}
catch
{
receivedMessage.DeadLetter();
}
});
提供的锁无效。锁定已过期或消息 已从队列中删除。
我错过了什么吗?
答案 0 :(得分:6)
根据Mike Z的评论,在创建队列以防止超时时设置LockDuration(默认值为1,最长可达5分钟)。
QueueDescription qd = new QueueDescription("MyQueue");
qd.LockDuration = ...
if (!namespaceManager.QueueExists("MyQueue"))
{
namespaceManager.CreateQueue(qd);
}
此外,使用RenewLock可以防止它在漫长的过程中超时:
receivedMessage.RenewLock()