我遇到Azure消息总线队列问题。
我正在抛出MessageLockLostException
并且请求操作未在分配的超时00:01:10内完成。分配给此操作的时间可能是较长超时的一部分。
我已将队列设置为ReceiveMode.PeekLock
。
我也检查
if(message.LockedUntilUtc.Minute <= 1)
message.RenewLock();
为什么会发生这种情况,导致锁定的原因是什么?我从你收到的地方读到的地方默认为5分钟。这个过程通常需要更长的时间。我想更新锁,但这不太顺利。
答案 0 :(得分:17)
LockDuration是队列的属性。您通常在创建队列时设置此项。这是Queue
级别的属性,无法在消息库中更改。你读过的,很可能是说这个持续时间不能超过5分钟。默认值为1分钟,这就是您遇到问题的原因。为什么你在70秒后面对它 - 我假设检查这个条件的逻辑每10秒执行一次。
因此,我建议您创建或修改您的队列以将LockDuration属性设置为5分钟。然后,在适当时处理您的邮件RenewLock。