锁定时间到期后如何续订?使用Azure Service Bus会话队列

时间:2019-08-30 08:43:52

标签: azure .net-core azureservicebus azure-servicebus-queues

当前,我通过将30秒配置为锁定持续时间来使用Azure Service Bus会话队列。

例如,我有一个会话,其中包含3条消息

  1. 在处理第一条消息要花费更多时间的同时,我要调用CompleteAsync()从队列中删除该消息。但是,每当我执行CompleteAsync()时,我都会收到SessionLockLostException。

    await session.CompleteAsync(message.SystemProperties.LockToken);
    

我想在锁过期时续订锁。

我遵循了本文档,但是没有获得续订令牌的任何示例。

1 个答案:

答案 0 :(得分:2)

  

我想在锁过期时续订锁。

不可能。锁令牌过期后,经纪人将认为它已解锁并服务于其他消费者。相反,您应该查看配置和设计方法。如果您收到的消息可能需要更长的处理时间,请不要使用30秒钟的MaxLockDuration来加速消息。如果5分钟还不够,请查看到期之前手动延长锁定时间,或者如果使用内置消息泵,则配置自动更新锁定的最大时间。