繁体   English   中英

如何从 Azure Function 更新服务总线消息?

[英]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将受到尊重。

Peeklock 行为

当 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM