メッセージ数を取得する
この記事では、キューまたはサブスクリプションのメッセージ数を取得する複数の方法について説明します。 現在展開されているものより、処理により多くのリソースを必要とするバックログをキューが生成するかどうか判断するために、アクティブなメッセージの数を把握することが有効です。
カウンタ | 説明 |
---|---|
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
ActiveMessageCount
、DeadLetterMessageCount
、ScheduledMessageCount
、TransferDeadLetterMessageCount
、TransferMessageCount
のプロパティを持つ MessageCountDetails
オブジェクトが返されます。
次のステップ
Azure Service Bus の機能については、使用する言語のサンプルを試してみてください。
- .NET 用の Azure Service Bus クライアント ライブラリのサンプル (最新)
- Java 用の Azure Service Bus クライアント ライブラリのサンプル (最新)
- Python 用の Azure Service Bus クライアント ライブラリのサンプル
- JavaScript 用の Azure Service Bus クライアント ライブラリのサンプル
- TypeScript 用の 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 から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。