存储队列触发的Azure功能是单个消息还是所有消息?

时间:2017-06-25 18:05:37

标签: azure azure-functions azure-storage-queues

如果我创建一个由存储队列消息触发的Azure功能...系统是否会启动多个并行功能以从队列中接收每条消息,或者是否会调用一个函数来读取所有可用消息?

简而言之,排队邮件是单独处理还是分批处理?

3 个答案:

答案 0 :(得分:8)

API-wise将根据队列中的每条消息调用一次函数。

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

答案 1 :(得分:5)

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

此外,我们可以对“队列”触发器进行配置,并在host.json file中指定/修改batchSize

“队列”触发器的配置设置

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

答案 2 :(得分:0)

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

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