将Azure队列BrokeredMessage标记为已处理成功
本文关键字:处理 成功 记为 Azure 队列 BrokeredMessage | 更新日期: 2023-09-27 18:17:35
我在worker角色中收到队列消息,但是当我尝试将BrokeredMessage
标记为完成时。我得到下面的错误:
Client.OnMessage((receivedMessage) =>
{
try
{
FileContainer fileInfoObj = receivedMessage.GetBody<FileContainer>();
//Message processing code
receivedMessage.Complete();
}
catch
{
receivedMessage.DeadLetter();
}
});
提供的锁无效。要么是锁过期,要么是消息已从队列中删除。
我错过了什么吗?
根据Mike Z的评论,在创建队列时设置LockDuration(默认为1,最多可达5分钟)以防止超时。
QueueDescription qd = new QueueDescription("MyQueue");
qd.LockDuration = ...
if (!namespaceManager.QueueExists("MyQueue"))
{
namespaceManager.CreateQueue(qd);
}
同时,使用RenewLock来防止它在长过程中超时:
receivedMessage.RenewLock()
从这里:https://stackoverflow.com/a/15305150/188926