你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

获取消息计数器

本文介绍为队列或订阅获取消息计数的不同方式。 对于确定队列是否累积了需要的处理资源比当前部署资源更多的积压工作,了解活动消息计数会十分有用。

计数器 说明
ActiveMessageCount 队列或订阅中处于活动状态且已准备发送的消息数。
ScheduledMessageCount 计划状态中的消息数。
DeadLetterMessageCount 死信队列中的信息数。
TransferMessageCount 等待传输到其他队列或主题的消息数。
TransferDeadLetterMessageCount 未能传输到其他队列或主题且已移动到传输死信队列中的消息数。

如果应用程序要基于队列长度缩放资源,则应按照慎重的进度执行此操作。 获取消息计数器是消息代理中成本高昂的操作,频繁执行它会直接对实体性能产生负面影响。

注意

发送到服务总线主题的消息将转发到该主题的订阅。 因此,主题本身的活动消息计数为 0,因为这些消息已成功转发到订阅。 获取订阅处的消息计数,并验证它是否大于 0。 即使你在订阅中看到消息,但它们实际上存储在主题所拥有的存储中。 如果查看这些订阅,则它们的消息计数不会为零(整个实体的空间总计达 323 MB)。

使用 Azure 门户

导航到你的命名空间,然后选择队列。 在队列的“概述”页面上,可以看到消息计数器。

Screenshot showing the Overview page of a queue with the Message Counts section highlighted.

导航到你的命名空间,选择主题,然后选择该主题的订阅。 在队列的“概述”页面上,可以看到消息计数器。

Screenshot showing the Overview page of a topic's subscription with the Message Counts section highlighted.

使用 Azure CLI

使用 az servicebus queue show 命令获取队列的消息计数详细信息,如下方示例中所示。

az servicebus queue show --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --query countDetails

下面是示例输出:

ActiveMessageCount    DeadLetterMessageCount    ScheduledMessageCount    TransferMessageCount    TransferDeadLetterMessageCount
--------------------  ------------------------  -----------------------  ----------------------  --------------------------------
0                     0                         0                        0                       0

使用 az servicebus topic subscription show 命令获取订阅的消息计数详细信息,如下方示例中所示。

az servicebus topic subscription show --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --topic-name mytopic \
    --name mysub \
    --query countDetails

使用 Azure PowerShell

使用 PowerShell,可以获取队列的消息计数详细信息,如下所示:

$queueObj=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
                    -NamespaceName mynamespace `
                    -QueueName myqueue 

$queueObj.CountDetails

下面是示例输出:

ActiveMessageCount             : 7
DeadLetterMessageCount         : 1
ScheduledMessageCount          : 3
TransferMessageCount           : 0
TransferDeadLetterMessageCount : 0

可以获取订阅的消息计数详细信息,如下所示:

$topicObj= Get-AzServiceBusSubscription -ResourceGroup myresourcegroup `
                -NamespaceName mynamespace `
                -TopicName mytopic `
                -SubscriptionName mysub

$topicObj.CountDetails

返回的 MessageCountDetails 对象具有以下属性:ActiveMessageCountDeadLetterMessageCountScheduledMessageCountTransferDeadLetterMessageCountTransferMessageCount

后续步骤

尝试采用所选语言的示例,了解 Azure 服务总线功能。

在下面查找早期 .NET 和 Java 客户端库示例:

2026 年 9 月 30 日,我们将停用 Azure 服务总线 SDK 库 WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus 和 com.microsoft.azure.servicebus,这些库不符合 Azure SDK 准则。 我们还将结束对 SBMP 协议的支持,因此在 2026 年 9 月 30 日之后,你将无法再使用此协议。 请在该日期之前迁移到最新的 Azure SDK 库,新库提供了关键安全更新和改进功能。

尽管 2026 年 9 月 30 日之后仍然可以使用较旧的库,但它们将不再获得 Microsoft 的官方支持和更新。 有关详细信息,请参阅支持停用公告