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

Azure服务总线订阅:如何获取活跃订阅者数量?

获取Azure Service Bus Subscription的活跃订阅者数量

好问题!我之前做Service Bus监控的时候也碰到过这个需求——用旧的NamespaceManager确实拿不到订阅者数量,因为它主要负责实体的元数据管理,碰不到运行时的连接统计。下面给你两种实用的方案:

方法1:用最新的Service Bus管理客户端直接获取(推荐)

现在Azure官方推荐使用Azure.Messaging.ServiceBus SDK,它的管理客户端能直接拿到订阅的运行时连接数。

步骤:

  1. 先安装对应的NuGet包:
    Install-Package Azure.Messaging.ServiceBus
    
  2. 示例代码:
    using Azure.Messaging.ServiceBus.Administration;
    
    // 初始化管理客户端
    var adminClient = new ServiceBusAdministrationClient("你的Service Bus命名空间连接字符串");
    
    // 获取目标Subscription的运行时属性
    var runtimeProps = await adminClient.GetSubscriptionRuntimePropertiesAsync("你的Topic名称", "你的Subscription名称");
    
    // ActiveConnectionsCount就是当前活跃的订阅者连接数
    int activeSubscribers = runtimeProps.ActiveConnectionsCount;
    Console.WriteLine($"当前该订阅的活跃订阅者数量:{activeSubscribers}");
    
    这里的ActiveConnectionsCount统计的是当前和该Subscription建立的活跃接收连接数——如果你的每个Worker实例用一个接收客户端,那这个数值就是当前在运行的活跃Worker订阅者数量。

方法2:通过Azure Monitor批量监控(适合长期追踪)

如果需要批量查看多个Subscription的活跃情况,或者做长期的监控告警,Azure Monitor的Metrics是更合适的选择:

  • 指标名称:ActiveConnections
  • 筛选维度:设置EntityType为Subscription,EntityName指定你要监控的订阅名称
  • 你可以直接在Azure门户的Service Bus资源页→「Metrics」里查看,也可以用Azure Monitor API、PowerShell或CLI来自动化查询数据。

补充提示

  • 如果你还在依赖旧的Microsoft.Azure.ServiceBus SDK(也就是NamespaceManager所在的包),很遗憾它没有提供获取活跃订阅者数量的直接方法,建议尽快升级到最新的SDK,不仅功能更全,性能和稳定性也更好。
  • 注意:如果你的Worker实例里创建了多个接收客户端,每个客户端都会被算作一个活跃连接,所以要根据你的Worker实现逻辑来解读这个数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:52:40