我已经看到很多问题,但是我还没有找到可行的解决方案。
简而言之,我会定期进行大量处理操作。每个操作均由Azure函数处理。每个操作都会调用数据库。如果我有太多同时运行的并发函数,这会使数据库超载,并且会出现超时错误。因此,我希望能够限制一次运行的并发Azure Function调用的数量。
我已经基于网上看到的内容,以多种方式将函数切换为队列触发并调整了batchSize / newBatchThreshold / maxDequeueCount host.json设置。我还已在功能应用程序设置中将WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT应用程序设置设置为1,以防止产生多个虚拟机。
但是,每次我填充该队列时,都会无序生成多个函数,并且数据库将崩溃。
如何限制并发操作的数量?
答案 0 :(得分:4)
问题最终导致V1和V2函数中host.json的格式存在差异。以下是正确的配置(至少使用Microsoft.Azure.WebJobs.Extensions.Storage
3.0.1)。以下host.json配置单个功能应用程序以按顺序处理队列消息。
{
"version":"2.0",
"extensions": {
"queues": {
"batchSize": 1,
"newBatchThreshold": 0
}
}
}
设置应用程序设置WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT = 1
限制了功能应用程序无法动态扩展到一个以上实例之外。