存储队列触发的 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
如果我创建一个由存储队列消息触发的 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