Azure Service Bus を探索する
Azure Service Bus は、メッセージ キューと、パブリッシュとサブスクライブのトピックを備えたフル マネージド エンタープライズ統合メッセージ ブローカーです。 Service Bus は、アプリケーションとサービスを分離するために使用されます。 データは、 メッセージを使用して異なるアプリケーションとサービス間で転送されます。 メッセージは、メタデータで装飾されたコンテナーであり、データを格納します。 データは、JSON、XML、Apache Avro、プレーン テキストなどの一般的な形式でエンコードされた構造化データなど、どのような種類の情報でもかまいません。
一般的なメッセージング シナリオの例を次にいくつか示します。
- メッセージング。 販売または購入の注文、仕訳帳、在庫移動などのビジネス データを転送します。
- アプリケーションを分離します。 アプリケーションとサービスの信頼性とスケーラビリティを向上します。 クライアントとサービスが同時にオンラインになっている必要はありません。
- トピックとサブスクリプション。 パブリッシャーとサブスクライバーの間で 1:n のリレーションシップを有効にします。
- メッセージ セッション。 メッセージの順序付けやメッセージの遅延が必要なワークフローを実装します。
Service Bus のレベル
Service Bus には、 Basic、 Standard、 Premium の 3 つの価格レベルが用意されています。 各レベルは、さまざまなユース ケースと要件に対応するように設計されています。
Basic レベル - スループットが低く、機能要件が最小限の単純なメッセージング シナリオに適しています。 Basic レベルでは、キューのみがサポートされます (トピックやサブスクリプションはサポートされません)。
Standard レベル - 開発者/テスト環境、またはアプリケーションが調整の影響を受けない低スループットシナリオに推奨されます。 サブスクリプションでキューとトピックの両方をサポートします。
Premium レベル - 予測可能な待機時間と高スループットを必要とする運用シナリオに推奨されます。 CPU レベルとメモリ レベルでリソースを分離し、ミッション クリティカルなアプリケーション向けの高度な機能を提供します。
利用可能なレベルの詳細については、 Service Bus の価格に関する説明を参照してください。
階層の比較
| 特徴量 | Basic | Standard | Premium |
|---|---|---|---|
| スループット | Low | Variable | High |
| Performance | 該当なし | 変わりやすい待機時間 | 予測可能なパフォーマンス |
| Pricing | プリペイド | 従量課金制の変わりやすい料金 | メッセージング ユニットあたりの固定価格 |
| Scaling | 該当なし | 該当なし | ワークロードをスケールアップおよびスケールダウンする機能 |
| メッセージ サイズ | 256 KB | 256 KB | 最大 100 MB |
| トピックとサブスクリプション | サポートされていません | サポートされています | サポートされています |
| トランザクション | サポートされていません | サポートされています | サポートされています |
| 自動転送 | サポートされていません | サポートされています | サポートされています |
| メッセージ セッション | サポートされていません | サポートされています | サポートされています |
高度な機能
Service Bus には、より複雑なメッセージングの問題を解決できる高度な機能があります。 次の表で、これらの機能のいくつかについて説明します。
| 特徴量 | 説明 |
|---|---|
| メッセージ セッション | Service Bus の先入れ先出し (FIFO) 処理を作成するには、セッションを使用します。 メッセージ セッションでは、関連メッセージのバインドなしシーケンスの排他的な順序指定処理が可能です。 |
| 自動転送 | 自動フォワード機能は、キューまたはサブスクリプションを、同じ名前空間内の別のキューまたはトピックにチェーンします。 |
| 配信不能キュー | Service Bus は配信不能キュー (DLQ) をサポートしています。 DLQ は、受信者に配信できないメッセージを保持します。 Service Bus を使用すると、DLQ のメッセージを削除し、検査することができます。 |
| スケジュールされた配信 | メッセージをキューまたはトピックに送信して、処理を遅延させることができます。 特定の時点にシステムで処理できるようにジョブをスケジュールすることができます。 |
| メッセージ遅延 | キューまたはサブスクリプション クライアントは、メッセージの取得を遅延させることができます。 メッセージは、キューまたはサブスクリプションに留まりますが、保留状態になります。 |
| トランザクション | トランザクションは、2 つ以上の操作を 1 つの 実行スコープにグループ化します。 Service Bus は、単一トランザクションのスコープ内の単一メッセージング エンティティに対するグループ化操作をサポートしています。 メッセージ エンティティは、キュー、トピック、またはサブスクリプションとすることができます。 |
| フィルター処理とアクション | サブスクライバーは、トピックから受信するメッセージを定義できます。 これらのメッセージは、1 つ以上の名前付きのサブスクリプション ルールの形式で指定されます。 |
| アイドル状態時の自動削除 | アイドル状態時の自動削除機能を使用すると、アイドル間隔を指定できます。この間隔が経過すると、キューは自動的に削除されます。 最小時間は、5 分です。 |
| 重複検出 | エラーが発生すると、クライアントは送信操作の結果について不明な状態になる可能性があります。 重複検出を使用すると、送信者は同じメッセージを再送信したり、キューまたはトピックで重複するコピーを破棄したりすることができます。 |
| セキュリティ プロトコル | Service Bus では、Shared Access Signature (SAS)、ロール ベースのアクセス制御 (RBAC)、Azure リソースのマネージド ID などのセキュリティ プロトコルがサポートされています。 |
| geo ディザスター リカバリー | Azure リージョンまたはデータセンターでダウンタイムが発生すると、geo ディザスター リカバリーにより、異なるリージョンまたはデータ センターでデータ処理を継続できます。 |
| セキュリティ | Service Bus は、標準の AMQP 1.0 および HTTP/REST プロトコルをサポートしています。 |
標準とプロトコルへの準拠
Service Bus のプライマリ ワイヤ プロトコルは、オープン ISO/IEC 標準である Advanced Messaging Queueing Protocol (AMQP) 1.0 です。 これにより、お客様は、Service Bus、および ActiveMQ や RabbitMQ などのオンプレミス ブローカーに対して動作するアプリケーションを作成できます。 このような抽象化を構築する場合の詳細については、 AMQP プロトコル ガイド を参照してください。
Service Bus Premium は、Java/Jakarta EE Java Message Service (JMS) 2.0 API に完全に準拠しています。
クライアント ライブラリ
完全にサポートされている Service Bus クライアント ライブラリを Azure SDK 経由で利用できます。