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

如何使用Microsoft.Azure.Management.ServiceBus获取队列消息数及队列CRUD示例

Azure Service Bus 队列CRUD及消息统计实现方案

前置依赖

首先安装所需NuGet包:

  • Microsoft.Azure.Management.ServiceBus
  • Azure.Identity(用于Azure AD认证)

初始化Service Bus管理客户端

所有操作都需要先完成认证,初始化ServiceBusManagementClient实例:

using Azure.Identity;
using Microsoft.Azure.Management.ServiceBus;
using Microsoft.Azure.Management.ServiceBus.Models;
using System.Threading.Tasks;

// 替换为实际的Azure订阅ID、资源组名、Service Bus命名空间名
var subscriptionId = "你的订阅ID";
var resourceGroupName = "你的资源组名";
var namespaceName = "你的Service Bus命名空间名";

// 可根据业务场景替换为ClientSecretCredential等其他凭证类型
var credentials = new DefaultAzureCredential();
var token = await credentials.GetTokenAsync(new Azure.Core.TokenRequestContext(new[] { "https://management.azure.com/.default" }));

var serviceBusClient = new ServiceBusManagementClient(new Microsoft.Rest.TokenCredentials(token.Token))
{
    SubscriptionId = subscriptionId
};

队列CRUD操作实现

1. 创建队列

var queueName = "test-queue";
var queueParameters = new SBQueue
{
    MaxSizeInMegabytes = 1024,
    DefaultMessageTimeToLive = TimeSpan.FromDays(7),
    EnableDeadLetteringOnMessageExpiration = true
};

SBQueue createdQueue = await serviceBusClient.Queues.CreateOrUpdateAsync(resourceGroupName, namespaceName, queueName, queueParameters);

CreateOrUpdateAsync方法返回的就是Microsoft.Azure.Management.ServiceBus.SBQueue类型的实例

2. 查询队列(获取SBQueue实例)

直接获取指定队列的SBQueue实例,是统计消息数的前置步骤:

SBQueue queue = await serviceBusClient.Queues.GetAsync(resourceGroupName, namespaceName, queueName);

3. 更新队列

示例为修改队列的消息默认生存时间:

queue.DefaultMessageTimeToLive = TimeSpan.FromDays(14);
SBQueue updatedQueue = await serviceBusClient.Queues.CreateOrUpdateAsync(resourceGroupName, namespaceName, queueName, queue);

4. 删除队列

await serviceBusClient.Queues.DeleteAsync(resourceGroupName, namespaceName, queueName);

统计队列消息数量

通过SBQueue实例的CountDetails属性可以直接获取各状态的消息计数:

SBQueue queue = await serviceBusClient.Queues.GetAsync(resourceGroupName, namespaceName, queueName);

// 各状态消息单独计数
long activeMessageCount = queue.CountDetails.ActiveMessageCount ?? 0;
long deadLetterCount = queue.CountDetails.DeadLetterMessageCount ?? 0;
long scheduledMessageCount = queue.CountDetails.ScheduledMessageCount ?? 0;
long transferDeadLetterCount = queue.CountDetails.TransferDeadLetterMessageCount ?? 0;
long transferMessageCount = queue.CountDetails.TransferMessageCount ?? 0;

// 队列总消息数统计
long totalMessageCount = activeMessageCount + deadLetterCount + scheduledMessageCount + transferDeadLetterCount + transferMessageCount;

注意:计数属性为可空类型,建议做非空判断避免空引用异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:09