Azure Service Bus - 高度な機能
Service Bus には、より複雑なメッセージングの問題を解決できる高度な機能があります。 この記事では、これらの機能のいくつかについて説明します。
メッセージ セッション
Service Bus の先入れ先出し (FIFO) 処理を作成するには、セッションを使用します。 メッセージ セッションでは、関連メッセージのバインドなしシーケンスの排他的な順序指定処理が可能です。 高スケールな高可用性システムでセッションを処理できるようにするために、セッション機能によってセッション状態を保存することもできます。これにより、セッションはハンドラー間を安全に移動できます。 詳細については、「メッセージ セッション: 先入れ先出し (FIFO)」を参照してください。
自動転送
自動転送機能は、キューまたはサブスクリプションを同じ名前空間内にある別のキューまたはトピックにチェーンします。 この機能を使用すると、Service Bus はキューまたはサブスクリプションからターゲットのキューまたはトピックにメッセージを自動的に移動します。 そうした移動はすべてトランザクションとして実行されます。 詳細については、「自動転送を使用した Service Bus エンティティのチェーン」を参照してください。
配信不能キュー
Service Bus のすべてのキューおよびトピック サブスクリプションには、配信不能キュー (DLQ) が関連付けられています。 DLQ は、次の条件を満たすメッセージを保持します。
- どの受信者にも正常に配信できない。
- タイムアウトした。
- 受信側アプリケーションによって明示的に一時保留されている。
配信不能キュー内のメッセージには、それらがそこに配置された理由が注釈として付けられます。 配信不能キューには特殊なエンドポイントがありますが、その点以外は通常のキューと同様に動作します。 アプリケーションやツールは、DLQ を参照したり、そこからデキューしたりできます。 配信不能キューから自動転送することもできます。 詳しくは、「Service Bus の配信不能キューの概要」をご覧ください。
スケジュールされた配信
メッセージを遅延処理されるようにキューまたはトピックに送信し、メッセージを処理できるようになる時間を設定できます。 スケジュール設定されたメッセージはキャンセルすることもできます。 詳細については、「スケジュールされたメッセージ」を参照してください。
メッセージ遅延
キューまたはサブスクリプション クライアントは、受信したメッセージの取得を遅延させることができます。 メッセージは想定外の順序で投稿されている可能性があり、クライアントは別のメッセージを受信するまで待機する必要があります。 遅延メッセージはキューまたはサブスクリプション内に残り、サービスによって割り当てられたシーケンス番号を使用して明示的に再アクティブ化する必要があります。 詳細については、「メッセージの遅延」を参照してください。
トランザクション
トランザクションにより、複数の操作が 1 つの実行スコープにグループ化されます。 Service Bus では、単一トランザクションのスコープ内の複数のメッセージング エンティティに対してグループ化操作を実行できます。 メッセージ エンティティは、キュー、トピック、またはサブスクリプションとすることができます。 詳しくは、「Service Bus のトランザクション処理の概要」を参照してください。
アイドル状態時の自動削除
アイドル状態時の自動削除機能を使用すると、アイドル間隔を指定できます。この間隔が経過すると、キューまたはトピックス サブスクリプションが自動的に削除されます。 サブスクリプションにメッセージが追加または削除されると、この間隔はリセットされます。 最小時間は、5 分です。 エンティティがアイドルと見なされる状態の概要については、「アイドル」を参照してください。
重複検出
重複検出機能を使用すると、送信側は同じメッセージを再送信し、重複する可能性のあるものをブローカーが削除できます。 詳しくは、「重複検出」をご覧ください。
メッセージの一括削除
Azure Service Bus では、メッセージの一括削除がサポートされています。 これは、キューまたはサブスクリプション内のメッセージが期限切れになったり、関連性がなくなったりしてクリーンアップが必要になった場合に便利です。 詳細については、一括削除に関する記事をご覧ください。
順序付けのサポート
順序付けのサポート機能を使用すると、トピックに送信されたメッセージを、送信されたのと同じ順序でサブスクリプションに転送するかどうかを指定できます。 この機能では、パーティション分割されたトピックはサポートされません。 詳細については、.NET の TopicProperties.SupportOrdering または Java の TopicProperties.setOrderingSupported を参照してください。
geo ディザスター リカバリー
Azure リージョンでダウンタイムが発生した場合、ディザスター リカバリー機能により、異なるリージョンまたはデータ センター内でメッセージ処理を継続できます。 この機能は、セカンダリ リージョン内で使用可能な名前空間の構造ミラーを保持し、名前空間 ID をセカンダリ名前空間に切り替えることができるようにします。 既にポストされているメッセージは、可用性エピソードが収まったら復旧できるよう、以前のプライマリ名前空間に残ります。 詳細については、「Azure Service Bus の geo ディザスター リカバリー」を参照してください。 この機能によってレプリケートされるのは、Service Bus エンティティ内のメタデータ (エンティティ、構成、プロパティ) のみで、エンティティ内のデータはレプリケートされません。
geo レプリケーション
Service Bus の geo レプリケーション機能は、障害および災害に対して Azure Service Bus アプリケーションを保護するオプションの 1 つであり、メタデータ (エンティティ、構成、プロパティ) とデータ (メッセージ データと、メッセージのプロパティ/状態の変更) の両方のレプリケーションを提供します。
セキュリティ
Service Bus は、標準の Advanced Message Queuing Protocol (AMQP) 1.0 および HTTP または REST プロトコルと、それぞれのセキュリティ機構 (トランスポート レベルのセキュリティ (TLS) など) をサポートしています。 Shared Access Signature または Microsoft Entra ID のロール ベース セキュリティを使用して、クライアントにアクセスを許可することができます。
不要なトラフィックから保護するために、Service Bus には、IP ファイアウォールや、仮想ネットワークとの統合などのセキュリティ機能が用意されています。
関連するコンテンツ
これらの Service Bus 機能の使い方を示す「Service Bus メッセージングのサンプル」を参照してください。