存储队列触发的 Azure Functions 是接受单条消息还是所有消息?

Do Azure Functions triggered by storage queue take single message or all messages?

如果我创建一个由存储队列消息触发的 Azure 函数...系统会启动多个并行函数来访问队列中的每条消息,还是会调用一个函数来读取所有可用消息?

简而言之,排队的消息是单独处理还是分批处理?

API-明智的是,您的函数将针对队列中的每条消息调用一次。

但是 Azure Functions 运行时将批量检索和处理消息,并行调用函数的多个实例。

首先,正如 Mikhail 所说,Azure Functions 运行时批量检索和处理队列消息。默认batchSize为16,最大batchSize为32

此外,我们可以在host.json file.

中配置'queue'触发器和specify/modifybatchSize

'queue' 触发器的配置设置

"queues": {
  "maxPollingInterval": 2000,
  "visibilityTimeout" : "00:00:10",
  "batchSize": 16,
  "maxDequeueCount": 5,
  "newBatchThreshold": 8
}

它不会一次性处理所有消息,但它支持消息批处理。为了启用批处理,您需要使函数的输入是类型的数组而不是类型本身。 (例如 EventData[] 而不是 EventData)然后应用批处理。如@Fei 所述,您可以将批量大小设置为最大 32。 查看以下 link 简要讨论:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-best-practices