【发布时间】:2022-11-06 22:32:08
【问题描述】:
我有一个包含许多服务总线队列和主题的 Azure 订阅。是否有一种简单的方法可以检查所有队列和主题订阅中的活动和死信消息计数,而无需逐个单击它们?
【问题讨论】:
标签: azure powershell azureservicebus azure-powershell
我有一个包含许多服务总线队列和主题的 Azure 订阅。是否有一种简单的方法可以检查所有队列和主题订阅中的活动和死信消息计数,而无需逐个单击它们?
【问题讨论】:
标签: azure powershell azureservicebus azure-powershell
这可以通过在 Azure Cloud Shell 中运行 PowerShell 脚本来实现。
如果您感兴趣的所有队列和主题都属于一个服务总线命名空间,您可以使用:
$resourceGroupName = <enter your resource group name here>
$namespaceName = <enter your namespace name here>
$queueMessageCounts = @()
$topicMessageCounts = @()
$queues = Get-AzServiceBusQueue -ResourceGroup $resourceGroupName -NamespaceName $namespaceName
foreach ($queue in $queues) {
$queueMessageCounts += [PSCustomObject]@{
Queue = $queue.Name
ActiveMessageCount = $queue.CountDetailActiveMessageCount
DeadLetterMessageCount = $queue.CountDetailDeadLetterMessageCount
}
}
$queueMessageCounts | Format-Table
$topics = Get-AzServiceBusTopic -ResourceGroup $resourceGroupName -NamespaceName $namespaceName
foreach ($topic in $topics) {
$subscriptions = Get-AzServiceBusSubscription -ResourceGroup $resourceGroupName -NamespaceName $namespaceName -TopicName $topic.Name
foreach ($subscription in $subscriptions) {
$topicMessageCounts += [PSCustomObject]@{
Topic = $topic.Name
Subscription = $subscription.Name
ActiveMessageCount = $subscription.CountDetailActiveMessageCount
DeadLetterMessageCount = $subscription.CountDetailDeadLetterMessageCount
}
}
}
$topicMessageCounts | Format-Table
如果您想获得订阅中的所有内容,请使用:
$queueMessageCounts = @()
$topicMessageCounts = @()
$namespaces = Get-AzServiceBusNamespace
foreach ($namespace in $namespaces) {
$queues = Get-AzServiceBusQueue -ResourceGroup $namespace.ResourceGroupName -NamespaceName $namespace.Name
foreach ($queue in $queues) {
$queueMessageCounts += [PSCustomObject]@{
Namespace = $namespace.Name
Queue = $queue.Name
ActiveMessageCount = $queue.CountDetailActiveMessageCount
DeadLetterMessageCount = $queue.CountDetailDeadLetterMessageCount
}
}
$topics = Get-AzServiceBusTopic -ResourceGroup $namespace.ResourceGroupName -NamespaceName $namespace.Name
foreach ($topic in $topics) {
$subscriptions = Get-AzServiceBusSubscription -ResourceGroup $namespace.ResourceGroupName -NamespaceName $namespace.Name -TopicName $topic.Name
foreach ($subscription in $subscriptions) {
$topicMessageCounts += [PSCustomObject]@{
Namespace = $namespace.Name
Topic = $topic.Name
Subscription = $subscription.Name
ActiveMessageCount = $subscription.CountDetailActiveMessageCount
DeadLetterMessageCount = $subscription.CountDetailDeadLetterMessageCount
}
}
}
}
$queueMessageCounts | Format-Table
$topicMessageCounts | Format-Table
【讨论】: