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

ASP.NET Core 2.0控制台应用监控Azure Service Bus队列深度咨询

在ASP.NET Core 2.0中监控Azure Service Bus队列深度的可行方案

嘿,我之前在ASP.NET Core项目里也碰到过这个问题——旧的NamespaceManager确实是.NET Framework专属的,在跨平台的ASP.NET Core里没法用。给你两个经过验证的可行方案,都是官方支持的跨平台SDK:

方案一:使用Microsoft.Azure.ServiceBus.Management(适配ASP.NET Core 2.0)

这个SDK是专门为跨平台场景设计的,支持.NET Standard 2.0,完美适配ASP.NET Core 2.0。

步骤:

  1. 安装NuGet包:
    dotnet add package Microsoft.Azure.ServiceBus.Management
    
  2. 编写代码获取队列深度:
    using System;
    using System.Threading.Tasks;
    using Microsoft.Azure.ServiceBus.Management;
    
    class Program
    {
        static async Task Main(string[] args)
        {
            // 替换成你的Service Bus连接字符串和队列名称
            string connectionString = "你的Service Bus连接字符串";
            string queueName = "目标队列名称";
    
            var managementClient = new ManagementClient(connectionString);
            
            // 获取队列的详细描述
            var queueDescription = await managementClient.GetQueueAsync(queueName);
            
            // 提取常规队列和死信队列的深度
            long regularDepth = queueDescription.MessageCount;
            long deadLetterDepth = queueDescription.DeadLetterMessageCount;
    
            Console.WriteLine($"常规队列当前消息数:{regularDepth}");
            Console.WriteLine($"死信队列当前消息数:{deadLetterDepth}");
        }
    }
    

方案二:使用Azure.Messaging.ServiceBus(适合ASP.NET Core 3.1+)

如果之后你计划升级项目到ASP.NET Core 3.1或更高版本,可以用这个最新的Azure Service Bus SDK,它是Azure SDK统一体系的一部分,API设计更简洁。不过注意它最低支持.NET Standard 2.1,ASP.NET Core 2.0对应的.NET Core 2.0不兼容这个版本,所以如果暂时不能升级项目,优先选方案一。

步骤:

  1. 安装NuGet包:
    dotnet add package Azure.Messaging.ServiceBus
    
  2. 编写代码获取队列深度:
    using System;
    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus.Administration;
    
    class Program
    {
        static async Task Main(string[] args)
        {
            string connectionString = "你的Service Bus连接字符串";
            string queueName = "目标队列名称";
    
            var adminClient = new ServiceBusAdministrationClient(connectionString);
            var queueProperties = await adminClient.GetQueueAsync(queueName);
            
            long regularDepth = queueProperties.Value.MessageCount;
            long deadLetterDepth = queueProperties.Value.DeadLetterMessageCount;
    
            Console.WriteLine($"常规队列当前消息数:{regularDepth}");
            Console.WriteLine($"死信队列当前消息数:{deadLetterDepth}");
        }
    }
    

注意事项:

  • 确保你的Service Bus连接字符串拥有Manage权限:只有具备管理权限的连接字符串才能调用这些管理API获取队列属性。
  • 生产环境建议缓存结果:管理API有调用频率限制,不要每秒都调用,可以设置定时任务(比如每隔1-5分钟)获取一次队列深度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:59:40