如果我创建一个由存储队列消息触发的Azure功能...系统是否会启动多个并行功能以从队列中接收每条消息,或者是否会调用一个函数来读取所有可用消息?
简而言之,排队邮件是单独处理还是分批处理?
答案 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