[英]Message is stuck at azure service Bus. How to retrigger delivery of message?
[英]How to renew Service Bus message from Azure Function?
我按照Microsoft 的文档进行设置(使用 c#),但由于服务总线队列的锁定持续时间,消息将过期。
isSessionsEnabled
为false,我在host.json中的设置如下,供参考:
{
"version": "2.0",
"functionTimeout": "00:10:00",
"extensions": {
"serviceBus": {
"prefetchCount": 100,
"messageHandlerOptions": {
"autoComplete": true,
"maxConcurrentCalls": 32,
// tried "00:00:55", "00:02:30", "00:05:00"
"maxAutoRenewDuration": "00:10:00"
}
}
}
}
我还尝试不在host.json
中实现extensions
(从文档中可以自动更新锁)但仍然不起作用。
作为参考,发现这个提到微软的文档可能有问题但没有提到可能的解决方案。
由function运行时控制,无需手动更新锁。Function可以自行更新消息锁。
如果您已将isSessionsEnabled
设置为true
,则sessionHandlerOptions
将受到尊重。 由于您已将isSessionsEnabled
设置为false
,因此messageHandlerOptions
将受到尊重。
当 Functions 运行时以窥视锁定模式接收消息时,一旦 function 成功完成,它就会对消息调用
Complete
,如果 function 失败,则会调用Abandon
。 如果 function 运行时间超过PeekLock
超时时间,只要 function 正在运行,锁就会自动更新。
maxAutoRenewDuration
可在host.json中配置,映射到OnMessageOptions.MaxAutoRenewDuration
根据文档,最大允许时间为 5 分钟,而您可以将函数运行时间限制从默认的 5 分钟增加到 10 分钟。 对于服务总线功能,您不希望这样做,因为您会超出服务总线续订限制。
请参阅此以获取有关消息过期的更多信息。
你能分享你的函数的签名吗? 我相信 maxAutoRenewDuration 仅适用于接收单个消息的函数,即不适用于接收消息数组/列表的函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.