2017-07-11 21 views
0

在消费计划下托管Azure功能时,如何应用存储队列轮询的概念?自定义存储轮询与消费计划Azure函数相关吗?

我使用经典的托管WebJob函数得到了投票的主体,我知道1分钟的最大轮询间隔可以被覆盖。但是在消费计划托管的情况下,没有应用程序级别的内存驻留进程,因此我假设Azure内部通过超出我的控制范围的其他触发器启动FunctionApp。

此问题的动机是我试图了解Azure托管的Web应用程序向存储队列添加消息时的典型E2E函数调用传播延迟。在我的情况下,WebApp,StorageQueue和预编译的函数DLL将运行在相同的Azure区域中。

我需要将Azure函数调用延迟限制在10秒以下,平均值为< 3秒。

回答

1

不幸的是,对于当前轮询模型的消费计划,这是不可能的,因为我们每10秒轮询触发资源以确定是否有新事件需要加载/启动功能实例。

如果您的函数应用程序运行频率足够高以至于它总是有活动实例(例如,每5分钟一个新的队列消息),您可以获得所需的调用延迟,因为实例本身会处理轮询。

最坏的情况(没有函数实例正在运行)是〜10s轮询+〜5s实例启动时间来处理新事件。

+0

感谢您的澄清,鉴于您所说的我会重新考虑并可能在AppService中托管我的功能。 – camelCase

+0

针对.Net Core的5秒钟功能应用程序启动时间会减少吗?我问,因为我记得一个Microsoft Build会议演示,提到.Net Core进程的300ms启动时间。 – camelCase

+1

是的,我们正在积极努力减少冷启动时间 - 转向.Net Core应该有助于实现这一点。 –