Azure函数在消费模式下以batchsize 1运行,但仍并行运行

Azure函数在消费模式下以batchsize 1运行,但仍并行运行,azure,azure-functions,azure-queues,Azure,Azure Functions,Azure Queues,根据,我正在使用Azure函数消耗计划,并试图限制其中一个队列触发函数的并行性,以便一次只运行一个实例: { "queues": { "batchSize": 1 } } 队列是Microsoft存储帐户的一部分,不是服务总线 但是,我的问题是,如果队列上同时有多个项目,则该函数仍在并行运行。我在上面的文档中读到了: 如果要避免在一个队列上接收的消息并行执行,可以将batchSize设置为1。但是,此设置仅在功能应用程序在单个虚拟机(VM)上运行时才消除并发。如果函数应用扩展到多个

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

{
  "queues": {
  "batchSize": 1
  }
}
队列是Microsoft存储帐户的一部分,不是服务总线

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

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


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

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

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

由于您希望限制其中一个队列触发函数的并行性,因此我建议您可以使用Azure App Service Plan来实现它


有关更多详细信息,您可以参考这一点。

您似乎在反对平台功能(这是针对大量流量而不是闲聊而调整的)。你能分享你的理由吗?也许我们可以提供一个更好的方法?除此之外,在队列中放置带有
NextVisibleTime
属性的消息可能会将它们“隔开”。仔细想想,我认为这叫做
scheduledqueuetimeutc
,它是一个
BrokeredMessage
,它只是一个服务总线。你也可以使用Webjob,它不会自行扩展,但你也可以在专门的应用程序服务计划中使用你的功能,实现同样的单身性质。我同意@evilSnobu。唯一的方法是使用应用程序服务计划而不是消费计划。@Blaze我怀疑,但不确定,该文档是在消费计划发布之前编写的。我可以做一个公关来纠正这些文件。