更新 Azure Function Node.js 版本,避免停机和丢失消息

Update Azure Function Node.js Version, avoid downtime and lost messages

我在 Elastic Premium 服务计划上托管了一个 Azure Function App。它由即将到来的服务总线消息触发。

我需要通过 Terraform 将 Node.js 版本从 12 升级到 14(在常规设置中配置)。但是,如果在处理消息时发生升级,我担心会导致停机并丢失消息。

对于新消息,应该没问题,因为它们不会被消费并稍后被阅读。但是,如果实例繁忙 运行 怎么办? Azure 是在执行升级之前等待它们完成(不创建新的),还是即使它们没有完成它也会杀死它们?

您能否让我放心或指导我完成此过程。我也在寻找指定这种情况下行为的文档。

非常感谢

在这种情况下,对节点 js 版本的应用程序设置的任何更新都会提示功能重启。

虽然在消息正在执行的情况下,除非执行完全完成,否则该函数不会删除消息,它们仍将位于服务总线中,并且只有在执行函数完成后才会被删除。

这是服务总线的 peeklock 行为,在发生故障时消息不会被删除,这也是默认行为。

参考以下 documentation 以进一步解释 peeklock 行为