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

迁移至Microsoft.Azure.ServiceBus后如何列出ServiceBus命名空间的主题与订阅

解决Microsoft.Azure.ServiceBus中列出主题/订阅的问题

我完全懂你迁移时的困惑——旧版WindowsAzure.ServiceBus里的NamespaceManager在新版本Microsoft.Azure.ServiceBus里确实找不到了,因为SDK重构时把资源管理功能移到了**ManagementClient**类里。下面给你直接替换旧代码的方案:

核心替换步骤

  1. 引用正确的命名空间
    首先确保代码里引入了管理类所在的命名空间:

    using Microsoft.Azure.ServiceBus.Management;
    
  2. 替换NamespaceManager为ManagementClient
    旧代码里的NamespaceManager.CreateFromConnectionString,换成ManagementClient的实例化:

    // 旧代码
    // var namespaceManager = NamespaceManager.CreateFromConnectionString("ServiceBusConnectionString");
    
    // 新代码
    using (var managementClient = new ManagementClient("ServiceBusConnectionString"))
    {
        // 获取所有主题
        var topics = await managementClient.GetTopicsAsync();
    
        foreach (var topic in topics)
        {
            // 获取当前主题下的所有订阅
            var subscriptions = await managementClient.GetSubscriptionsAsync(topic.Path);
    
            foreach (var subscription in subscriptions)
            {
                // 这里写你的业务逻辑,比如打印信息或者处理订阅
                Console.WriteLine($"主题: {topic.Path}, 订阅名称: {subscription.SubscriptionName}");
            }
        }
    }
    

关键注意事项

  • 权限要求:你的Service Bus连接字符串必须包含Manage权限(通常是RootManageSharedAccessKey对应的连接字符串),否则执行管理操作会抛出权限不足的异常。
  • Disposable实现:ManagementClient实现了IDisposable,用using包裹可以自动释放资源,避免连接泄漏。
  • 异步兼容性:新版本SDK全异步设计,保持await的使用即可,和旧代码的异步逻辑兼容。

这样就能完美替代旧版的主题/订阅遍历逻辑啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:10:40