当 Azure Function 在消耗计划下托管时,存储队列轮询的概念如何应用?
我了解了使用经典托管 WebJob 函数进行轮询的原理,并且我了解可以覆盖 1 分钟的最大轮询间隔。然而,在消费计划托管的情况下,没有应用程序级内存驻留进程,因此我假设 Azure 内部通过我无法控制的其他触发器启动 FunctionApp。
这个问题的动机是我试图了解当 Azure 托管的 WebApp 将消息添加到存储队列时典型的 E2E 函数调用传播延迟。就我而言,WebApp、StorageQueue 和预编译函数 DLL 将在同一 Azure 区域中运行。
我需要将 Azure 函数调用延迟限制在 10 秒以内,平均为 <3 秒。
最佳答案
不幸的是,这在当前轮询模型的消耗计划中是不可能的,因为我们每 10 秒轮询一次触发器资源,以确定是否有新事件需要加载/启动函数实例。
如果您的函数应用运行得足够频繁,以至于始终有事件实例(例如,每 5 分钟一条新队列消息),您可以获得所需的调用延迟,因为实例本身会处理轮询。
最坏的情况(没有函数实例运行)是约 10 秒的轮询 + 约 5 秒的实例启动时间来处理新事件。
关于azure - 自定义存储轮询与消耗计划 Azure Functions 相关吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45040630/