Azure Service Bus 内でメッセージをバッチ削除する (プレビュー)
Azure Service Bus は、切り離されたアプリケーションとサービスの間でメッセージを送受信できるようにする、フル マネージドのエンタープライズ統合メッセージ ブローカーです。 しかし、有効期限が切れている、破損している、無関係な場合など、メッセージを処理せずにキューまたはサブスクリプションからそれらを削除したい場合があります。 この記事では、Azure Service Bus 内でメッセージをバッチ削除する方法について説明します。
メッセージのバッチ削除のシナリオ
Azure Service Bus 内でメッセージのバッチ削除機能を使用するシナリオがいくつかあります。 次に示すのはその一部です。
- 有効期限切れのメッセージ: 有効期限 (TTL) の値を超えて、配信不能キュー内にあるメッセージを削除します。
- 検証または処理の失敗: 検証または処理ロジックが失敗し、配信不能キュー内にあるメッセージを削除します。
- 無関係なメッセージ: アクティブなキューから、もうアプリケーション ロジックと関係がなくなったメッセージを削除します。
- 重複したまたは正しくない内容の処理: アクティブなキューから、重複したまたは正しくないメッセージを削除します。
メッセージのバッチ削除機能を使用すると、1 つずつ削除する代わりに、1 回の操作でキューまたはサブスクリプションから複数のメッセージを削除できます。 削除はサービス側で行われるため、メッセージを削除する前にそれらを受信する必要はありません。 この方法により、サービス要求の数とネットワーク待機時間の両方を最小限に抑えられます。
重要
現時点では、パーティション分割されたエンティティでの Batch 削除はサポートされていません。 1 回のバッチ削除呼び出しでは、最大 4,000 個のメッセージを削除できます。 バッチ削除はベストエフォート ベースで実行され、1 回の API 呼び出しの中で正確な messageCount を削除することは保証しません。
Service Bus 内でメッセージをバッチ削除する方法
Service Bus レシーバー オブジェクト上で DeleteMessagesAsync を呼び出すと、メッセージを削除できます。 サーバー側では、DeleteMessagesAsync
には、messageCount
と beforeEnqueueTime
の 2 つのパラメーターが必要です。
messageCount
: 削除するメッセージの数 (見込み)。 サービスによって削除されるメッセージ数は、この制限よりも少ない場合があります。beforeEnqueueTime
: 削除のカットオフ時刻を表す、省略可能な DateTimeOffset (UTC)。 この時刻より前にエンキューされたメッセージのみが削除されます。
さらに、PurgeMessagesAsync を呼び出して、エンティティからすべてのメッセージを消去できます。
Azure portal を使用して
Azure portal で使用できる Service Bus Explorer を使用して、エンティティからメッセージを消去することもできます。 次の手順に従ってメッセージを消去できます:
- メッセージを削除するエンティティの [Service Bus Explorer] ブレードに移動します。
- Service Bus Explorer のドロップダウンで [受信モード] を選択します。
- スナップショットに示すように、メッセージの消去オプションをクリックします。
- 別のダイアログ ボックスが表示され、「purge」と入力してメッセージの消去操作を実行します。
Azure SDK を使用してこれらの操作を実行する場合、beforeEnqueueTime パラメーターは既定で現在の UTC 時刻 (DateTime.UtcNow()) に設定されます。 意図しないメッセージの削除を防ぐために、正しい値を確実に指定することが重要です。
Note
消去の操作には複数の API 呼び出しが伴うため、CPU 使用率が増加する可能性があります。 消去中、ロックされたメッセージは削除の対象にならず、そのエンティティ内に残ります。
次のステップ
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 クライアント ライブラリのサンプルは次のとおりです。
- .NET 用の Azure Service Bus クライアント ライブラリのサンプル (レガシ) - プリフェッチのサンプルを参照してください。
- Java 用の Azure Service Bus クライアント ライブラリのサンプル (レガシ) - プリフェッチのサンプルを参照してください。
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 から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。