我以辅助角色接收队列消息,但是当我尝试将 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

关于c# - 将 Azure Queue BrokeredMessage 标记为已成功处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25269001/

10-10 09:18