我的hosts.json文件是这样的:
{
"version": "2.0",
"extensions": {
"queues": {
"maxPollingInterval": "00:00:02",
"visibilityTimeout": "00:01:00",
"batchSize": 2,
"maxDequeueCount": 2,
"newBatchThreshold": 1
}
}
}
然而,我可以看到至少有50个并发会话在运行。这是否存在已知的问题,或者我应该做一些不同的事情来限制从队列触发器运行的并发函数的数量?
如果看到WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT,但它似乎还没有得到完全支持。
来自MSDN-Azure函数:
batchSize
函数运行时同时检索并并行处理的队列消息数。当正在处理的数量下降到newBatchThreshold时,运行时将获得另一个批并开始处理这些消息。因此,每个函数处理的最大并发消息数是batchSize加上newBatchThreshold。此限制分别适用于每个队列触发的函数。
因此,并发操作的数量受到此约束的限制。在示例配置的情况下,最多可以有3个并发操作。但是,如果有更多的消息排队,那么它们将在当前批处理之后进行处理。根据处理每条消息的速度,这可能是每秒大量的消息。
当您监视最终结果时,可能会出现这样的情况,即在很小的时间窗口内有大量操作,但它们不一定是并发的。