Azure Service Bus和长处理消息

时间:2017-04-12 10:36:17

标签: azure azureservicebus azure-configuration azure-servicebus-topics

在我的系统LockDuration = 5分钟内,AutoRenewTimeout = 20分钟。处理一些消息超过5分钟(有时5:15,有时超过6:00)。 对于这些消息,我有一个例外:

"The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue."

我在日志中读到,系统开始处理消息(让我们称之为Process_A),在5分钟后,系统再次开始处理相同的消息时,它仍在进行中(让我们称之为Process_B)。 Process_A完成并调用Complete()。然后Process_B完成了工作并调用了Complete()。它会导致异常,因为此消息已经被压缩。

我在文档中发现LockDuration的最大值是5分钟。为什么? 持续时间超过5分钟的邮件无法处理?或者可能配置错误了?

1 个答案:

答案 0 :(得分:1)

解决方案是更新对消息的锁定,以防处理消息的时间超过最大锁定持续时间。如果您使用的是Azure Service Bus .Net SDK,则您希望调用的方法是RenewMessageLock并传入您在获取邮件时收到的锁定ID。

您可能还会发现此博文有用:http://vunvulearadu.blogspot.in/2015/09/azure-service-bus-how-to-extend-lock-of.html