如果 Azure Function App 在消耗计划中缩减为 0,它如何侦听来自事件中心的传入事件?

问题描述

假设我在消费计划中有一个 Azure Function App,它监听 Azure 事件中心。根据 this 文档,如果没有传入事件,函数应用实例的数量可以缩减为 0。在我的理解中,每个函数应用实例也会实例​​化一个 Event Processor Host,它正在监听事件中心的分区。但如果实例数为 0,那么谁在监听事件中心以确定是否必须处理消息?当函数的实例数为 0 时,是否存在事件处理器主机?这是迄今为止我想要完成的关于 Azure Functions + Azure 事件中心的(不完整)图片

enter image description here

在上述文档中,我还阅读了有关规模控制器的内容,该控制器显然会在需要时添加新的功能主机实例。这是否意味着缩放控制器还必须侦听事件中心?缩放控制器位于何处,它是我可以在 Azure 中创建的函数应用资源的一部分,还是托管在独立于我的函数应用的 Azure 独立部分中的缩放控制器?

编辑:根据答案采用的图片

解决方法

这就是 Azure 上的托管函数运行时正在为您做的事情。它为您侦听事件中心(或服务总线或其他受支持的触发器源)——您无需为该计算付费。一旦检测到新消息,它就会启动您的函数的一个或多个实例 - 此时仅开始计费。

enter image description here

Source

如果您在其他地方运行 Functions,例如在 k8s 集群中,您必须自己托管规模控制器并使其始终运行。