c# - 将 Azure 队列 BrokeredMessage 标记为已成功处理?

标签 c# azure

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

从这里开始: https://stackoverflow.com/a/15305150/188926

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

相关文章:

c# - 广告在 WP 应用程序中不起作用

azure - 通知中心事件设备是否会变得不活动?

reactjs - 通过 Azure Function 和 auth0 进行存储帐户应用程序身份验证

azure - AADSTS50011 错误 - 请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配

azure - 帐户级 SAS token 的默认开始时间和到期时间

c# - 将值与 Azure 连接字符串的 PowerShell 脚本分开

c# - 无效的匿名类型成员声明符

c# - 如何将存储过程添加到 EF .edmx?

c# - 条件属性

c# - 使用 Mono.Cecil 将方法的主体替换为另一个方法的主体?