对于每个this documentation,我正在使用Azure Function消耗计划,并试图限制队列触发函数之一的并行性,以便一次仅运行一个实例:
{
"queues": {
"batchSize": 1
}
}
该队列是Microsoft存储帐户的一部分,并且不是服务总线。
但是,我的问题是,如果队列中一次有多个项目,则该函数仍在并行运行。我阅读了上面文档的精美印刷版:
如果要避免并行处理在一个队列中接收到的消息,可以将batchSize设置为1。但是,仅当功能应用程序在单个虚拟机(VM)上运行时,此设置才消除并发。如果功能应用程序可扩展到多个VM,则每个VM可以运行每个队列触发功能的一个实例。
由于我正在使用消耗计划,我如何知道功能应用程序是在单个VM上还是在多个VM上运行?如何成功将此功能的批处理大小限制为一个?
答案 0 :(得分:2)
在使用计划中,单个功能应用最多只能扩展到200个实例。但是,单个实例一次可以处理多个消息或请求,因此并发执行的次数没有设置限制。
此外,当您使用消费计划时,会根据传入事件的数量动态添加和删除Azure Functions主机实例。
由于要限制队列触发的功能之一的并行性,因此建议您使用Azure App Service Plan来实现。
有关更多详细信息,您可以参考此article。