9

我在使用 Azure 消息总线队列时遇到问题。

我已经MessageLockLostException抛出并且请求操作没有在分配的 00:01:10 超时内完成。分配给此操作的时间可能是较长超时的一部分

我已将队列设置为ReceiveMode.PeekLock.

我也检查

if(message.LockedUntilUtc.Minute <= 1)
    message.RenewLock();

为什么会发生这种情况,是什么导致锁失效?我从你收到的地方开始阅读,默认情况下你有 5 分钟。这个过程通常需要更长的时间。我想更新锁,但这不是很好。

4

1 回答 1

20

LockDuration是队列的属性。您通常在创建队列时设置它。这是Queue级别属性,不能在消息库上更改。你读到的,很可能是说这个持续时间不能超过 5 分钟。默认值为 1 分钟,这就是您遇到问题的原因。以及为什么您要在 70 秒后面对它 - 我假设检查此条件的逻辑每 10 秒执行一次。

所以我建议您创建或修改您的 Queue 以将LockDuration属性设置为 5 分钟。然后,在适当的时候对您的消息进行RenewLock 操作。

于 2013-03-08T23:35:07.240 回答