Share via


メッセージ数を取得する

この記事では、キューまたはサブスクリプションのメッセージ数を取得する複数の方法について説明します。 現在展開されているものより、処理により多くのリソースを必要とするバックログをキューが生成するかどうか判断するために、アクティブなメッセージの数を把握することが有効です。

カウンタ 説明
ActiveMessageCount キューまたはサブスクリプションにあるメッセージのうち、アクティブな状態で配信準備ができているものの数。
ScheduledMessageCount スケジュールされた状態のメッセージの数。
DeadLetterMessageCount 配信不能キューにあるメッセージの数。
TransferMessageCount 別のキューまたはトピックへの転送を待つメッセージの数。
TransferDeadLetterMessageCount 別のキューまたはトピックへの転送に失敗して転送不能キューに入ったメッセージの数。

アプリケーションで、キューの長さに基づいてリソースを拡張する必要がある場合は、正確に測定された間隔で実行する必要があります。 メッセージ カウンターの取得は、メッセージ ブローカー内で多くのリソースを必要とする操作であり、頻繁に実行すると、エンティティ パフォーマンスに直接的な悪影響を及ぼします。

注意

Service Bus トピックに送信されたメッセージは、そのトピックのサブスクリプションに転送されます。 したがって、これらのメッセージはサブスクリプションに正常に転送されているため、そのトピック自体のアクティブなメッセージ数は 0 です。 サブスクリプションにあるメッセージ数を取得し、それが 0 より大きいことを確認してください。 サブスクリプションにメッセージがあるとしても、実際には、それらはトピックが所有しているストレージに格納されています。 サブスクリプションを見れば、メッセージ数は 0 以外の数になっているはずです (このエンティティ全体で合計最大 323 MB のスペースを使用)。

Azure Portal の使用

名前空間に移動してキューを選びます。 そのキューの概要ページでメッセージ数を確認できます。

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

ActiveMessageCountDeadLetterMessageCountScheduledMessageCountTransferDeadLetterMessageCountTransferMessageCount のプロパティを持つ MessageCountDetails オブジェクトが返されます。

次のステップ

Azure Service Bus の機能については、使用する言語のサンプルを試してみてください。

以前の .NET および Java クライアント ライブラリのサンプルについては、以下を参照してください。

2026 年 9 月 30 日に、Azure SDK ガイドラインに準拠していない Azure Service Bus SDK ライブラリ WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus、および com.microsoft.azure.servicebus は廃止されます。 SBMP プロトコルのサポートも終了するため、2026 年 9 月 30 日以降、このプロトコルを使用できなくなります。 重要なセキュリティ更新プログラムと強化された機能を提供する最新の Azure SDK ライブラリに、その日付より前に移行します。

以前のライブラリは 2026 年 9 月 30 日以降も引き続き使用できますが、Microsoft から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。