Azure Event Grid、Event Hubs、Service Busから選択する

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 にストリーム配信する」を参照してください。 次の図は、データ ストリーミングのワークフローを示しています。

Event Hubs、Service Bus、Event Grid を接続する方法を示す図。