次の方法で共有


メッセージ数を取得する

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

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

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

スケーリングで考慮すべきもう 1 つの有用なメトリックは、最新のメッセージが送信されてから処理されるまでの時間 ("クリティカル タイム" とも呼ばれます) です。 これは、キューに何千ものメッセージが含まれている可能性があっても、対応できるだけの十分な処理速度であり、"クリティカル タイム" が数秒しかかからない (これは、電子メール送信エンドポイントなどには十分すぎる速度です) シナリオに役立ちます。 NServiceBus などのサード パーティ製ライブラリは、OpenTelemetry を介してこのメトリックやその他の有用なメトリックを出力します。

Note

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

Azure Portal の使用

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

キューの [概要] ページを示すスクリーンショット。[メッセージ数] セクションが強調表示されています。

名前空間に移動してトピックを選び、そのトピックのサブスクリプションを選びます。 そのキューの概要ページでメッセージ数を確認できます。

トピックのサブスクリプションの [概要] ページを示すスクリーンショット。[メッセージ数] セクションが強調表示されています。

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 から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。