我更习惯于服务总线队列,但在与Azure Function App一起使用时遇到了挑战。
我们有Azure Function App,它通过ServiceBugTrigger从Service Bus队列读取数据。根据此link,Azure Function App在内部(在队列触发器和函数执行结束时)内部管理队列消息PeekLock,我们不需要在过程结束时使用Complete()消息。
我的队列消息锁定持续时间设置为3分钟(这足以执行我的任务,超出我的要求)。我还应用了其他必需的参数来很好地处理消息,例如,
"serviceBus": {
"maxAutoRenewDuration": "00:05:00",
"maxConcurrentCalls": 10,
"prefetchCount": 0
}
在此实现中,我经常遇到LOCK DURATION EXPIRED错误。真的不知道这里发生了什么,有任何线索吗?
我习惯于服务总线队列,并且了解每个参数功能。另外,已根据要求配置了每个参数。
答案 0 :(得分:0)
当maxAutoRenewDuration超过servicebus端的锁定持续时间时,会发生这种情况。 您应该检查在服务总线队列侧指定的锁定持续时间。确保它大于或等于您的azure函数中指定的maxAutoRenewDuration
您可以从门户或服务总线资源管理器中对其进行更新