当前,我通过将30秒配置为锁定持续时间来使用Azure Service Bus会话队列。
例如,我有一个会话,其中包含3条消息
在处理第一条消息要花费更多时间的同时,我要调用CompleteAsync()从队列中删除该消息。但是,每当我执行CompleteAsync()时,我都会收到SessionLockLostException。
await session.CompleteAsync(message.SystemProperties.LockToken);
我想在锁过期时续订锁。
我遵循了本文档,但是没有获得续订令牌的任何示例。
答案 0 :(得分:2)
我想在锁过期时续订锁。
不可能。锁令牌过期后,经纪人将认为它已解锁并服务于其他消费者。相反,您应该查看配置和设计方法。如果您收到的消息可能需要更长的处理时间,请不要使用30秒钟的MaxLockDuration
来加速消息。如果5分钟还不够,请查看在到期之前手动延长锁定时间,或者如果使用内置消息泵,则配置自动更新锁定的最大时间。