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

如何批量查看Azure中所有Service Bus队列与主题的消息计数?

批量查看Azure Service Bus队列/主题订阅消息计数的可行方法

方法1:Azure CLI批量查询

通过Azure CLI可以快速遍历所有Service Bus资源,批量输出活跃消息和死信消息计数。

  1. 先登录Azure账号:
    az login

  2. 查询所有队列的消息计数:

for ns in $(az servicebus namespace list --query "[].name" -o tsv); do
    echo "=== 命名空间: $ns ==="
    az servicebus queue list --namespace-name $ns --query "[].{队列名称:name, 活跃消息数:countDetails.activeMessageCount, 死信消息数:countDetails.deadLetterMessageCount}" -o table
done
  1. 查询所有主题及其订阅的消息计数:
for ns in $(az servicebus namespace list --query "[].name" -o tsv); do
    echo "=== 命名空间: $ns ==="
    topics=$(az servicebus topic list --namespace-name $ns --query "[].name" -o tsv)
    for topic in $topics; do
        echo "--- 主题: $topic ---"
        az servicebus topic subscription list --namespace-name $ns --topic-name $topic --query "[].{订阅名称:name, 活跃消息数:countDetails.activeMessageCount, 死信消息数:countDetails.deadLetterMessageCount}" -o table
    done
done

方法2:PowerShell脚本批量导出

用PowerShell可以更灵活地处理结果,甚至导出为CSV文件留存。

  1. 连接Azure账号:
    Connect-AzAccount

  2. 批量查询并输出结果(可导出为CSV):

$results = @()
$namespaces = Get-AzServiceBusNamespace

foreach ($ns in $namespaces) {
    # 处理队列
    $queues = Get-AzServiceBusQueue -ResourceGroupName $ns.ResourceGroupName -NamespaceName $ns.Name
    foreach ($queue in $queues) {
        $results += [PSCustomObject]@{
            资源类型 = "队列"
            命名空间 = $ns.Name
            名称 = $queue.Name
            活跃消息数 = $queue.CountDetails.ActiveMessageCount
            死信消息数 = $queue.CountDetails.DeadLetterMessageCount
        }
    }

    # 处理主题订阅
    $topics = Get-AzServiceBusTopic -ResourceGroupName $ns.ResourceGroupName -NamespaceName $ns.Name
    foreach ($topic in $topics) {
        $subscriptions = Get-AzServiceBusSubscription -ResourceGroupName $ns.ResourceGroupName -NamespaceName $ns.Name -TopicName $topic.Name
        foreach ($sub in $subscriptions) {
            $results += [PSCustomObject]@{
                资源类型 = "主题订阅"
                命名空间 = $ns.Name
                所属主题 = $topic.Name
                名称 = $sub.Name
                活跃消息数 = $sub.CountDetails.ActiveMessageCount
                死信消息数 = $sub.CountDetails.DeadLetterMessageCount
            }
        }
    }
}

# 输出到控制台
$results | Format-Table -AutoSize

# 导出到CSV文件(可选)
$results | Export-Csv -Path "ServiceBus_Message_Counts.csv" -NoTypeInformation -Encoding UTF8

方法3:Azure Monitor自定义仪表板

如果需要可视化查看,可通过Azure Monitor创建自定义仪表板,批量展示所有队列/订阅的消息计数:

  • 进入Azure Monitor,选择「仪表板」>「新建」
  • 添加「指标」部件,设置:
    • 订阅:选择目标Azure订阅
    • 资源类型:Service Bus 队列(或Service Bus 主题订阅)
    • 资源:选择「所有资源」
    • 指标:添加「Active Messages」和「DeadLetter Messages」
    • 拆分维度:选择「队列名称」(或「订阅名称」)
  • 保存仪表板后,即可在一个视图中查看所有实体的实时消息计数,还可配置阈值告警。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:05:33