Azure Function 运行 消费模式下 1 的批量大小仍然 运行 并行

Azure Function running with batchsize of 1 in consumption mode still running in parallel

根据 this documentation,我正在使用 Azure Functions 消耗计划,并试图限制其中一个队列触发函数的并行性,以便一次只有一个实例 运行s:

{
  "queues": {
  "batchSize": 1
  }
}

队列是 Microsoft 存储帐户的一部分,不是服务总线。

但是,我的问题是如果队列中同时有多个项目,该函数仍然运行并行。我阅读了上面文档的细则:

If you want to avoid parallel execution for messages received on one queue, you can set batchSize to 1. However, this setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM). If the function app scales out to multiple VMs, each VM could run one instance of each queue-triggered function.

由于我使用的是消费计划,我如何知道函数应用程序是 运行ning 在单个 VM 上还是在多个 VM 上?如何成功将此函数的批量大小限制为一个?

在消费计划中,单个功能应用最多只能扩展到 200 个实例。不过,单个实例可能一次处理多个消息或请求,因此并发执行的数量没有设置限制

此外,当您使用消耗计划时,Azure Functions 主机的实例会根据传入事件的数量动态添加和删除。

由于你想限制其中一个队列触发函数的并行度,所以我建议你可以使用Azure App Service Plan来实现它。

更多细节,你可以参考这篇article