应用服务计划下,如何限制Azure函数服务总线触发器的并发消息处理?
Azure应用服务计划下限制服务总线触发器并发消息处理的推荐方式
当Azure函数运行在应用服务计划(含专用、Premium计划)时,消耗计划里的Max Concurrent Calls配置不再生效,推荐通过以下方式控制并发:
组合配置工作进程数与单进程并发数
总并发处理数由「实例数 × 每个实例的工作进程数 × 每个工作进程的并发调用数」决定,你可以通过两个核心配置调整:- 应用设置
FUNCTIONS_WORKER_PROCESS_COUNT:设置每个实例的工作进程数量,最大值等于实例的CPU核心数 - 单进程并发数:有两种设置方式
- 代码配置:在函数应用的启动类中,注入
ServiceBusOptions并设置MaxConcurrentCallsPerWorker属性 - 应用设置:添加
AzureWebJobsServiceBusMaxConcurrentCallsPerWorker配置项,直接指定每个工作进程的最大并发调用数
- 代码配置:在函数应用的启动类中,注入
- 应用设置
结合实例规模调整
- 若使用Premium计划,可配置自动缩放规则,根据CPU、内存等指标自动调整实例数量,间接控制总并发上限
- 若使用专用计划,手动调整实例数量,配合上述进程和单进程并发配置,精准控制总并发量
额外注意事项
- 计算总并发时要兼顾资源负载,避免设置过高导致实例CPU/内存耗尽,或过低引发消息堆积延迟
- 处理带会话的服务总线消息时,并发数会受会话锁机制限制,单一会话的消息只能串行处理,此时整体并发上限还会受会话数量影响
内容的提问来源于stack exchange,提问作者H4p7ic
相关产品推荐
相关产品推荐

