Azure Functions 弹性高级计划和队列触发器

Azure Functions Elastic Premium Plan and Queue Triggers

我们有一个解决方案,我们使用 Azure 存储队列来处理大约需要 6 分钟的消息。

我了解到每个 VM 最多 batchSize 并发处理的队列消息 32

If the function app scales out to multiple VMs, each VM could run one instance of each queue-triggered function.

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue?tabs=in-process%2Cextensionv5%2Cextensionv3&pivots=programming-language-csharp#host-json

这如何转化为 Azure Functions Premium plan? 假设我们希望能够使用带有 Always ready instances 的 Azure Functions Premium 计划一次处理 64 条消息。如果我们有 2 个就绪实例,它们可以处理 2 * 32 个并发消息吗?或者它们在水下真的需要在单独的 VM 上并且 2 个实例不会做任何不同的事情吗?

In the Premium plan, you can have your app always ready on a specified number of instances. The maximum number of always ready instances is 20. When events begin to trigger the app, they are first routed to the always ready instances.

https://docs.microsoft.com/en-us/azure/azure-functions/functions-premium-plan?tabs=portal#always-ready-instances

是的。在 Azure Functions 高级计划中,如果您有 pre-warmed 个实例,则会获得一个 专用 VM 实例。因此,如果您有 2 个 VM 实例 运行 您的函数应用程序,那么它们可以处理 2*(batchSize + newBatchThreshold) 个并发队列消息! 随着现有实例变得更加繁忙,Azure 平台将函数应用扩展到新的 VM 上。