You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure Service Bus触发器使函数应用一次仅处理一条消息

Azure Service Bus配置实现函数应用单条消息处理

要让函数应用一次仅处理一条Service Bus队列消息,需要从触发器参数配置和宿主全局配置两个层面调整,同时配合队列的预取设置,具体如下:

1. 修改函数触发器属性

直接在ServiceBusTrigger特性中指定MaxConcurrentCalls = 1,限制该函数同时处理的消息数量为1。如果需要严格控制预取行为,可额外设置PrefetchCount = 0(或1),避免客户端提前拉取多条消息。

修改后的代码示例:

[FunctionName("ServiceBusListener")]
public void Run(
    [ServiceBusTrigger("myqueue", Connection = "MyConnection", MaxConcurrentCalls = 1, PrefetchCount = 0)] 
    string queueContent, 
    ILogger log)
{
    _myService.ProcessMessage(queueContent);
    log.LogInformation($"C# ServiceBus queue trigger function processed message: {queueContent}");
}

2. 全局宿主配置(host.json)

如果希望所有Service Bus触发器都遵循单条处理规则,可在host.json中配置全局参数,优先级低于触发器的单独设置:

{
  "version": "2.0",
  "extensions": {
    "serviceBus": {
      "maxConcurrentCalls": 1,
      "prefetchCount": 0
    }
  }
}

关键配置说明

  • MaxConcurrentCalls:控制函数应用同时处理的Service Bus消息数量,设为1时,函数会处理完当前消息后再接收下一条。
  • PrefetchCount:设置客户端提前从队列预取的消息数量,设为0会禁用预取,确保只有当前消息处理完成后才会请求下一条;设为1则允许预取一条备用,但仍保证同时仅处理一条。

内容的提问来源于stack exchange,提问作者Anwesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:25:28