Azure メッセージング サービスの中から選択する - Azure Event Grid、Event Hubs、および Service BusChoose between Azure messaging services - Event Grid, Event Hubs, and Service Bus

Azure には、ソリューション全体にわたるイベント メッセージの配信を支援する 3 つのサービスがあります。Azure offers three services that assist with delivering event messages throughout a solution. これらのサービスを次に示します。These services are:

いくつかの類似点もありますが、各サービスはそれぞれ、特定のシナリオ向けに設計されています。Although they have some similarities, each service is designed for particular scenarios. この記事では、これらのサービスの相違点について説明し、アプリケーションでどのサービスを選択すればよいかを把握しやすくします。This article describes the differences between these services, and helps you understand which one to choose for your application. 多くの場合、メッセージング サービスは補完的で、組み合わせて使用することができます。In many cases, the messaging services are complementary and can be used together.

イベント サービスとメッセージ サービスEvent vs. message services

イベント配信サービスとメッセージ配信サービスの間には、注意が必要な重要な相違点があります。There's an important distinction to note between services that deliver an event and services that deliver a message.

EventEvent

イベントは、状態または状態変更の軽量の通知です。An event is a lightweight notification of a condition or a state change. イベントの発行元は、イベントの処理方法に関して何も予測していません。The publisher of the event has no expectation about how the event is handled. 通知の処理方法はイベントの処理者が決定します。The consumer of the event decides what to do with the notification. イベントは、個別の単位またはシリーズの一部になることができます。Events can be discrete units or part of a series.

個別のイベントは、状態の変更を報告し、対応可能です。Discrete events report state change and are actionable. 処理者が次の手順を実行するために必要なのは、何かが起こったことを知ることだけです。To take the next step, the consumer only needs to know that something happened. イベント データには、発生した事象に関する情報は含まれますが、イベントをトリガーしたデータは含まれていません。The event data has information about what happened but doesn't have the data that triggered the event. たとえば、あるイベントは、ファイルが作成されたことを処理者に通知します。For example, an event notifies consumers that a file was created. このイベントにファイルに関する一般情報が含まれることはありますが、ファイル自体は含まれません。It may have general information about the file, but it doesn't have the file itself. 個別のイベントは、スケーリングする必要があるサーバーレス ソリューションに最適です。Discrete events are ideal for serverless solutions that need to scale.

一連のイベントは、状態を報告し、分析可能です。Series events report a condition and are analyzable. イベントは、時間順に並べられ、相互に関連付けられています。The events are time-ordered and interrelated. 処理者は、一連のイベントを分析して、何が起こったかを知る必要があります。The consumer needs the sequenced series of events to analyze what happened.

MessageMessage

メッセージは、サービスによって生成される生データで、別の場所で使用または格納されます。A message is raw data produced by a service to be consumed or stored elsewhere. メッセージには、メッセージ パイプラインをトリガーしたデータが含まれています。The message contains the data that triggered the message pipeline. メッセージの発行元は、処理者によるメッセージの処理方法を予測しています。The publisher of the message has an expectation about how the consumer handles the message. 両者の間には協定が存在します。A contract exists between the two sides. たとえば、発行元は、メッセージを生データで送信し、処理者がそのデータからファイルを作成し、作業が終わったときに応答を送信すると予測しています。For example, the publisher sends a message with the raw data, and expects the consumer to create a file from that data and send a response when the work is done.

サービスの比較Comparison of services

ServiceService 目的Purpose typeType いつ使用するかWhen to use
Event GridEvent Grid リアクティブ プログラミングReactive programming イベントの配信 (個別)Event distribution (discrete) 状態の変更に反応するReact to status changes
Event HubsEvent Hubs ビッグ データのパイプラインBig data pipeline イベントのストリーミング (シリーズ)Event streaming (series) テレメトリと分散データ ストリーミングTelemetry and distributed data streaming
Service BusService Bus 高価値のエンタープライズ メッセージングHigh-value enterprise messaging MessageMessage 注文処理や金融取引Order processing and financial transactions

Event GridEvent Grid

Event Grid は、イベント駆動のリアクティブ プログラミングを可能にするイベント バックプレーンです。Event Grid is an eventing backplane that enables event-driven, reactive programming. 発行-サブスクライブ モデルを使用します。It uses a publish-subscribe model. 発行元はイベントを発行しますが、どのイベントが処理されるかは想定していません。Publishers emit events, but have no expectation about which events are handled. サブスクライバーが、どのイベントを処理するかを決定します。Subscribers decide which events they want to handle.

Event Grid は Azure サービスと緊密に統合されており、サード パーティのサービスと統合することもできます。Event Grid is deeply integrated with Azure services and can be integrated with third-party services. イベントの使用が簡略化され、定期的にポーリングする必要がなくなるためコストも削減できます。It simplifies event consumption and lowers costs by eliminating the need for constant polling. Event Grid は、Azure および Azure 以外のリソースからのイベントを効率的かつ確実にルーティングします。Event Grid efficiently and reliably routes events from Azure and non-Azure resources. イベントは、登録されたサブスクライバーのエンドポイントに配信されます。It distributes the events to registered subscriber endpoints. イベント メッセージには、サービスやアプリケーションの変更に対応するために必要な情報が含まれています。The event message has the information you need to react to changes in services and applications. Event Grid は、データ パイプラインではないため、更新された実際のオブジェクトは配信しません。Event Grid isn't a data pipeline, and doesn't deliver the actual object that was updated.

Event Grid は、エンドポイントに配信されないイベントの配信不能処理をサポートしています。Event Grid supports dead-lettering for events that aren't delivered to an endpoint.

次の特性があります。It has the following characteristics:

  • 動的にスケーラブルdynamically scalable
  • 低コストlow cost
  • サーバーレスserverless
  • 1 回以上の配信at least once delivery

Event HubsEvent Hubs

Azure Event Hubs は、ビッグ データのパイプラインです。Azure Event Hubs is a big data pipeline. テレメトリおよびイベント ストリーム データのキャプチャ、保持、再生を容易にします。It facilitates the capture, retention, and replay of telemetry and event stream data. データは多数のソースから同時に取得できます。The data can come from many concurrent sources. Event Hubs を使用すると、テレメトリとイベントのデータをさまざまなストリーム処理インフラストラクチャや分析サービスで使用できるようになります。Event Hubs allows telemetry and event data to be made available to a variety of stream-processing infrastructures and analytics services. データ ストリームとしても、バンドルされているイベント バッチとしても使用できます。It is available either as data streams or bundled event batches. このサービスは 1 つのソリューションで、リアルタイム処理用の高速なデータ取得と、格納された生データの繰り返し再生の両方を可能にします。This service provides a single solution that enables rapid data retrieval for real-time processing as well as repeated replay of stored raw data. ストリーミング データをファイルにキャプチャして、処理と分析で使用できます。It can capture the streaming data into a file for processing and analysis.

次の特性があります。It has the following characteristics:

  • 待ち時間の短縮low latency
  • 1 秒あたり数百万のイベントを受信および処理可能capable of receiving and processing millions of events per second
  • 1 回以上の配信at least once delivery

Service BusService Bus

Service Bus は、従来のエンタープライズ アプリケーションを対象としています。Service Bus is intended for traditional enterprise applications. これらのエンタープライズ アプリケーションは、トランザクション、順序付け、重複の検出、瞬間的な整合性を必要とします。These enterprise applications require transactions, ordering, duplicate detection, and instantaneous consistency. Service Bus を使用すると、クラウドネイティブ アプリケーションでビジネス プロセスに対する信頼性の高い状態遷移管理を実現できます。Service Bus enables cloud-native applications to provide reliable state transition management for business processes. 損失や重複が許されない高価値のメッセージを処理する場合は、Azure Service Bus を使用してください。When handling high-value messages that cannot be lost or duplicated, use Azure Service Bus. Service Bus は、ハイブリッド クラウド ソリューション全体で安全性の高い通信を容易にします。そして、既存のオンプレミス システムをクラウド ソリューションに接続できます。Service Bus also facilitates highly secure communication across hybrid cloud solutions and can connect existing on-premises systems to cloud solutions.

Service Bus はブローカー メッセージング システムです。Service Bus is a brokered messaging system. 使用側がメッセージを受信する準備ができるまで、メッセージを "ブローカー" (キューなど) に格納します。It stores messages in a "broker" (for example, a queue) until the consuming party is ready to receive the messages.

次の特性があります。It has the following characteristics:

  • ポーリングが必要な信頼性の高い非同期メッセージ配信 (サービスとしてのエンタープライズ メッセージング)reliable asynchronous message delivery (enterprise messaging as a service) that requires polling
  • 高度なメッセージング機能 (FIFO、バッチ処理/セッション、トランザクション、配信不能処理、一時的制御、ルーティングとフィルタリング、重複検出など)advanced messaging features like FIFO, batching/sessions, transactions, dead-lettering, temporal control, routing and filtering, and duplicate detection
  • 1 回以上の配信at least once delivery
  • 順次配信 (オプション)optional in-order delivery

サービスを組み合わせて使用するUse the services together

場合によっては、異なる役割を実行するために複数のサービスを並行して使用します。In some cases, you use the services side by side to fulfill distinct roles. たとえば、eコマース サイトでは、注文の処理に Service Bus、サイトのテレメトリのキャプチャに Event Hubs、イベント (アイテムの出荷など) への応答に Event Grid を使用できます。For example, an ecommerce site can use Service Bus to process the order, Event Hubs to capture site telemetry, and Event Grid to respond to events like an item was shipped.

別のケースでは、これらのサービスをリンクしてイベントとデータのパイプラインを形成することもできます。In other cases, you link them together to form an event and data pipeline. Event Grid を使用して、他のサービスのイベントに応答することもできます。You use Event Grid to respond to events in the other services. Event Grid と Event Hubs を使用してデータをデータ ウェアハウスに移行する例については、「ビッグ データをデータ ウェアハウスにストリーミングする」を参照してください。For an example of using Event Grid with Event Hubs to migrate data to a data warehouse, see Stream big data into a data warehouse. 次の図は、データ ストリーミングのワークフローを示しています。The following image shows the workflow for streaming the data.

データ ストリーミングの概要

次の手順Next steps

次の記事を参照してください。See the following articles: