我在 Kubernetes 集群中运行队列触发 Azure 函数。有时,Azure Function 容器在处理消息时会停止执行。日志只是显示"Application is shutting down..."
。
我的目标是让当前的执行在函数关闭之前完成。有什么办法可以做到这一点?
我在 Kubernetes 集群中运行队列触发 Azure 函数。有时,Azure Function 容器在处理消息时会停止执行。日志只是显示"Application is shutting down..."
。
我的目标是让当前的执行在函数关闭之前完成。有什么办法可以做到这一点?
首先,第一步是通知函数即将中止。您可以为此使用CancellationToken:
函数可以接受 CancellationToken 参数,该参数使操作系统能够在函数即将终止时通知您的代码。您可以使用此通知来确保函数不会以使数据处于不一致状态的方式意外终止。
现在您知道该功能即将中止,您可以对此做出反应。但是,您只有 10 秒的时间才能中止该功能。这样您就可以在有限的时间内完成消息处理。
一种选择是取消进一步处理并回滚任何更改,如果这比完成消息更快,那么消息对于其他可以处理的实例再次可见。