Azureには、ソリューション全体でイベントとメッセージを配信するためのサービスがいくつか用意されています。 リアクティブ イベント ルーティングから高スループット ストリーミング、エンタープライズ レベルのトランザクション メッセージングまで、各サービスは異なるシナリオを対象とします。
この記事では、次のサービスを比較します。
候補サービスを選択する
このセクションは、ニーズに最も適したサービスを選択するのに役立ちます。
次の表を使用して、シナリオに適したサービスをすばやく絞り込みます。
| 基準 | Event Grid | Event Hubs | Service Bus |
|---|---|---|---|
| 主な目的 | リアクティブ イベント ルーティング | ビッグ データのストリーミングとインジェスト | エンタープライズ トランザクション メッセージング |
| データ モデル | イベント (個別の通知) | イベント ストリーム (時系列) | メッセージ (高価値のペイロード) |
| 配信保証 | 少なくとも 1 回 | 少なくとも 1 回 | 少なくとも1回(順序指定は任意、セッションありの場合はちょうど1回) |
| いつ使用するか | 状態の変更、サーバーレス アーキテクチャに対応する | テレメトリ、分散データ ストリーミング、リアルタイム分析 | 注文処理、財務トランザクション、ワークフロー |
このセクションの結果は、検討の開始点です。 サービスの詳細な評価を実行するには、次のセクションを使用します。
Azure メッセージング サービスにおけるイベントとメッセージの違い
イベントを配信するサービスとメッセージを配信するサービスAzureには重要な違いがあります。
イベント: 条件または状態の変更に関する軽量の通知。 パブリッシャーは、イベントの処理方法について期待を持っていません。 イベントには、不連続 (アクション可能な状態変更の報告) や時系列の一部 (分析可能な条件の報告) を指定できます。 個別のイベントは、スケーリングする必要があるサーバーレス ソリューションに最適です。
メッセージ: サービスによって生成された生データは、他の場所で使用または保存されます。 メッセージには、メッセージ パイプラインをトリガーしたデータが含まれています。 パブリッシャーとコンシューマーの間にコントラクトが存在します。 たとえば、発行元は生データを含むメッセージを送信し、コンシューマーがそのデータからファイルを作成し、作業が完了したときに応答を送信することを想定しています。
スケーラビリティとスループット
次の表では、スケーラビリティとスループットのAzure Event Grid、Azure Event Hubs、およびAzure Service Busの処理方法を比較します。
| 基準 | Event Grid | Event Hubs | Service Bus |
|---|---|---|---|
| Throughput | 動的にスケーラブルなサーバーレス | 1 秒あたり数百万件のイベント | 信頼性の高い非同期配信 |
| 待機時間モデル | ほぼリアルタイムのイベント配信 | 待機時間の短いストリーミング | オプションのロングポーリングに対応したブローカー経由 |
| スケーリング モデル | 自動 (サーバーレス) | スループット ユニット/処理ユニット | メッセージング ユニット (Premium) |
メッセージング機能
次の表では、Azure Event Grid、Azure Event Hubs、およびAzure Service Busのメッセージング機能を比較します。
| 基準 | Event Grid | Event Hubs | Service Bus |
|---|---|---|---|
| プロトコル | MQTT、HTTP | AMQP、Kafka、HTTP | AMQP、HTTP |
| Pub/Sub | はい(パブリッシュ/サブスクライブ) | はい (コンシューマー グループ) | はい (トピックとサブスクリプション) |
| 順序付け | 保証なし | パーティションごと | FIFO (セッション) |
| トランザクション | いいえ | いいえ | はい |
| 重複検出 | いいえ | いいえ | はい |
| デッドレタリング | はい | いいえ | はい |
| バッチ処理 | はい | はい(イベントバッチ) | はい (セッション) |
| キャプチャ/再生 | いいえ | はい (Event Hubs Capture) | いいえ |
統合とデプロイ
次の表では、Azure Event Grid、Azure Event Hubs、およびAzure Service Busの統合とデプロイのオプションを比較します。
| 基準 | Event Grid | Event Hubs | Service Bus |
|---|---|---|---|
| Azure サービス統合 | Azure サービスおよびサード パーティ サービスとの緊密な統合 | ストリーム処理インフラストラクチャと分析サービス | エンタープライズ アプリケーション、ハイブリッド クラウド、オンプレミス接続 |
| エディション | Azure Event Grid (PaaS)、Azure Arc 対応の Kubernetes 上の Event Grid | Standard、Premium、Dedicated | Basic、Standard、Premium |
Event Grid、Event Hubs、Service Busを一緒に使用する
場合によっては、異なる役割を実行するために複数のサービスを並行して使用します。 たとえば、eコマース サイトでは、Service Busを使用して注文を処理し、Event Hubs を使用してサイト テレメトリをキャプチャし、Event Grid を使用して出荷されるアイテムなどのイベントに応答できます。
別のケースでは、これらのサービスをリンクしてイベントとデータのパイプラインを形成することもできます。 Event Grid を使用して、他のサービスのイベントに応答することもできます。 Event Hubs で Event Grid を使用して Azure Synapse Analytics にデータを移行する例については、「 ビッグ データを Azure Synapse Analytics にストリーム配信する」を参照してください。 次の図は、データ ストリーミングのワークフローを示しています。