在消耗模式下以批处理大小为1运行的Azure函数仍在并行运行

时间:2018-09-11 15:25:22

标签: azure azure-functions azure-queues

对于每个this documentation,我正在使用Azure Function消耗计划,并试图限制队列触发函数之一的并行性,以便一次仅运行一个实例:

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

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

但是,我的问题是,如果队列中一次有多个项目,则该函数仍在并行运行。我阅读了上面文档的精美印刷版:

  

如果要避免并行处理在一个队列中接收到的消息,可以将batchSize设置为1。但是,仅当功能应用程序在单个虚拟机(VM)上运行时,此设置才消除并发。如果功能应用程序可扩展到多个VM,则每个VM可以运行每个队列触发功能的一个实例。

由于我正在使用消耗计划,我如何知道功能应用程序是在单个VM上还是在多个VM上运行?如何成功将此功能的批处理大小限制为一个?

1 个答案:

答案 0 :(得分:2)

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

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

由于要限制队列触发的功能之一的并行性,因此建议您使用Azure App Service Plan来实现。

有关更多详细信息,您可以参考此article