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

如何在Azure Function中为Azure Service Bus主题订阅添加SQL Filter

Azure Service Bus主题订阅SQL Filter配置方法

Azure Service Bus的订阅过滤规则属于Service Bus资源的配置项,无需修改Azure Function代码,仅需在Service Bus侧完成规则配置即可,操作方法如下:

  • 方法1:Azure Portal可视化配置(对应你截图中的操作)
    1. 进入你的Azure Service Bus命名空间,找到名称为send-not的主题
    2. 进入主题详情页后,在左侧导航栏选择「订阅」,依次点击需要配置的订阅(send-idea、send-email)进入单独配置页
    3. 在订阅详情页左侧导航栏选择「过滤规则」
    4. 先删除默认的$Default规则(该规则默认SQL表达式为1=1,会匹配所有消息)
    5. 点击「+ 添加」,规则类型选择SQL Filter,填写自定义规则名称,在SQL表达式框中填写你需要的过滤逻辑,比如按自定义消息属性区分的场景可填写messageType = 'email'(对应send-email订阅)、messageType = 'idea'(对应send-idea订阅)
    6. 保存规则即可生效
  • 方法2:Azure CLI命令行配置(适合自动化部署场景)
    示例命令如下,替换尖括号内的参数为你实际的资源信息即可:
    # 配置send-email订阅过滤规则
    # 删除默认规则
    az servicebus topic subscription rule delete --resource-group <你的资源组名称> --namespace-name <Service Bus命名空间名称> --topic-name send-not --subscription-name send-email --name \$Default
    # 添加SQL过滤规则
    az servicebus topic subscription rule create --resource-group <你的资源组名称> --namespace-name <Service Bus命名空间名称> --topic-name send-not --subscription-name send-email --name emailFilter --filter-sql-expression "messageType = 'email'"
    
    # 配置send-idea订阅过滤规则
    az servicebus topic subscription rule delete --resource-group <你的资源组名称> --namespace-name <Service Bus命名空间名称> --topic-name send-not --subscription-name send-idea --name \$Default
    az servicebus topic subscription rule create --resource-group <你的资源组名称> --namespace-name <Service Bus命名空间名称> --topic-name send-not --subscription-name send-idea --name ideaFilter --filter-sql-expression "messageType = 'idea'"
    
  • 配套消息发送要求
    过滤规则配置完成后,你需要在发送消息到send-not主题时,给消息添加对应的自定义属性,示例C#发送代码如下:
    ServiceBusSender sender = serviceBusClient.CreateSender("send-not");
    // 发送邮件类型消息
    ServiceBusMessage emailMsg = new ServiceBusMessage("邮件通知内容");
    emailMsg.ApplicationProperties.Add("messageType", "email");
    await sender.SendMessageAsync(emailMsg);
    
    // 发送idea类型消息
    ServiceBusMessage ideaMsg = new ServiceBusMessage("idea通知内容");
    ideaMsg.ApplicationProperties.Add("messageType", "idea");
    await sender.SendMessageAsync(ideaMsg);
    

配置完成后,订阅仅会接收匹配SQL规则的消息,原有Azure Function的Service Bus触发器绑定无需做任何修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:24:01