Azure CLI を使用してイベント ハブを作成する

完了

あなたのチームは、Azure Event Hubs の機能を使って、システムからの増え続けるトランザクション量を管理して処理することにします。

イベント ハブは Azure のリソースであるため、最初の手順では、Azure で新しいハブを作成し、アプリに固有の要件に合わせて構成します。

Azure Event Hubs とは

Azure Event Hubs はクラウドベースのイベント処理サービスであり、毎秒数百万のイベントを受け取って処理することができます。 Event Hubs はイベント パイプラインの入り口として機能し、受信データを受け取って、処理リソースが使用できるようになるまでこのデータを格納します。

イベント ハブにデータを送信するエンティティは、"パブリッシャー" と呼ばれます。イベント ハブからデータを読み取るエンティティは、"コンシューマー" または "サブスクライバー" と呼ばれます。 イベント ハブは、パブリッシャーとサブスクライバーの間に存在し、イベント データ ストリームの (パブリッシャーによる) 生成と (サブスクライバーによる) 消費を分離します。 この分離は、イベント生成速度が消費より大幅に速いシナリオを管理するのに役立ちます。 次の図は、イベント ハブのロールを示しています。

An illustration showing an Azure event hub placed between four publishers and two subscribers. The event hub receives multiple events from the publishers, serializes the events into data streams, and makes the data streams available to subscribers.

イベント

イベントは、通知を含む情報の小さなパケット (ダイアグラム) です。 イベントは個別に、またはバッチとして発行できますが、1 回の発行 (個別またはバッチ) で 1 MB を超えることはできません。

パブリッシャーとサブスクライバー

イベントのパブリッシャーは、HTTPS、Advanced Message Queuing Protocol (AMQP) 1.0、または Apache Kafka を使用してイベントを送信できる、任意のアプリまたはデバイスです。

  • データを頻繁に送信するパブリッシャーの場合、AMQP の方がパフォーマンスが向上します。 しかし、永続的な双方向ソケットとトランスポート層セキュリティ (TLS) または SSL/TLS を最初に設定する必要があるため、初回セッションのオーバーヘッドは高くなります。
  • より断続的な発行の場合は、HTTPS の方が適切です。 HTTPS の場合、要求ごとに追加のオーバーヘッドが必要ですが、セッションの初期化のオーバーヘッドはありません。
  • Event Hubs により、独自の Apache Kafka クラスターを実行する代わりに、既存のほとんどの Apache Kafka クライアント アプリケーションで使用できる、Apache Kafka プロデューサーおよびコンシューマー API と互換性のあるエンドポイントが提供されます。 Event Hubs によって、Apache Kafka のプロデューサーおよびコンシューマー API クライアントのバージョン 1.0 以降がサポートされています。 詳細については、Apache Kafka 用の Event Hubs に関するページを参照してください。

イベントのサブスクライバーは、サポートされている 2 つのプログラム方式のいずれかを使用して、イベント ハブからイベントを受信し、処理するアプリです。

  • EventHubReceiver - 限られた管理オプションが提供されるシンプルな方法。
  • EventProcessorHost - このモジュールで後ほど使用する、効率的な方法。

コンシューマー グループ

イベント ハブのコンシューマー グループは、イベント ハブ データ ストリームの特定のビューを表します。 複数の異なるコンシューマー グループを使うと、複数のサブスクライバー アプリで、他のアプリに影響を与えることなく、個別にイベント データ ストリームを処理できます。 しかし、多くのコンシューマー グループの使用は必須ではありません。多くのアプリでは、既定のコンシューマー グループが 1 つあれば十分です。

価格

Azure Event Hubs には、Basic、Standard、Premium、Dedicated という 4 つの価格レベルがあります。 各レベルは、サポートされる接続、使用できるコンシューマー グループの数、スループットの点で違いがあります。 価格レベルを指定せずに、Azure CLI を使用して Event Hubs 名前空間を作成すると、既定の Standard (20 個のコンシューマー グループ、1,000 個のブローカー接続) が割り当てられます。 これらのレベルの主な違いについては、「Event Hubs の価格」をご覧ください。

イベント ハブを作成および構成する

新しいイベント ハブを作成する主な手順は 2 つあります。 最初の手順は、Event Hubs 名前空間を定義することです。 2 つ目の手順は、その名前空間にイベント ハブを作成することです。

Event Hubs 名前空間を定義する

Event Hubs 名前空間は、1 つまたは複数のイベント ハブを管理するためのコンテナーです。 Event Hubs 名前空間を作成するには、通常、以下の構成が必要です。

名前空間レベルの設定を定義する

名前空間の容量 (Standard レベルの場合はスループット ユニットを使用して構成されます)、価格レベル、パフォーマンス メトリックは、名前空間レベルで定義されます。 これらの設定は、その名前空間内のすべてのイベント ハブに適用されます。 これらの設定を定義しない場合は、既定値 (容量には 1、価格レベルには Standard) が使われます。

次の点に注意してください。

  • Azure の予算見込みに合わせて構成を調整する必要があります。

  • さまざまなスループット要件に応じて異なるイベント ハブ構成を考慮する場合があります。 たとえば、売上データ アプリがあり、2 つのイベント ハブを計画している場合、ハブごとに個別の名前空間を使用することをお勧めします。

    リアルタイム売上データの高スループットの収集用に 1 つの名前空間を構成し、低頻度のイベント ログの収集用に 1 つの名前空間を構成します。 このようにすると、構成する (そして支払う) 必要があるのは、リアルタイム売上データ ハブに対する高スループット容量のみです。

    1. 名前空間の一意の名前を選択します。 名前空間にアクセスするには、namespace.servicebus.windows.net という URL を使用します

    2. 次の省略可能なプロパティを定義します。

      • この名前空間をゾーン冗長にします。 ゾーン冗長を使用すると、独立した電力、ネットワーク、および冷却インフラストラクチャを備えた個別のデータ センター間でデータをレプリケートできます。

      • スループット ユニット (Standard レベル) の自動スケールアップを有効にします。 自動インフレでは、スループット ユニット数を最大値まで増やすことによって、自動スケールアップ オプションが提供されます。 このオプションは、受信または送信データ レートが、現在設定されているスループット ユニット数を超える場合に、スロットルを回避するのに便利です。

Event Hubs 名前空間を作成するための Azure CLI コマンド

新しい Event Hubs 名前空間を作成するには、az eventhubs namespace コマンドを使用します。 ここでは、演習で使うコマンドについて簡単に説明します。

command 説明
create Event Hubs 名前空間を作成します。
authorization-rule 同じ名前空間内のすべてのイベント ハブでは、共通の接続資格証明が共有されます。 イベント ハブを使ってメッセージを送受信するようにアプリを構成するときは、これらの資格証明が必要です。 このコマンドでは、Event Hubs 名前空間の接続文字列を返します。

新しいイベント ハブを構成する

Event Hubs 名前空間を作成した後、イベント ハブを作成できます。 イベント ハブを作成するときは、必須のパラメーターがいくつかあります。

イベント ハブを作成するには、次のパラメーターが必須です。

  • イベント ハブ名 - サブスクリプション内で一意のイベント ハブ名であり、以下の条件があります。
    • 1 から 50 文字であること。
    • 英字、数字、ピリオド、ハイフン、アンダースコアのみを含むこと。
    • 名前の先頭と末尾が英字または数字であること。
  • パーティション数 - イベント ハブに必要なパーティションの数 (Standard レベルの場合は 2 から 32 の間)。 パーティション数は、予想される同時コンシューマーの数に直接関連付けられている必要があり、ハブの作成後には変更できません。 パーティションによってメッセージ ストリームは分離されます。そのため、コンシューマーまたは受信側アプリでは、データ ストリームの特定のサブセットのみを読み取る必要があります。 定義されていない場合、値は既定で 4 に設定されます。
  • メッセージの保持期間 - 何らかの理由でデータ ストリームを再生する必要がある場合のため、メッセージを利用可能にしておく日数 (Standard レベルの場合は 1 から 7)。 定義されていない場合、この値は既定で 7 に設定されます。

必要に応じて、Azure Blob Storage または Azure Data Lake Storage にデータをストリーム配信するようにイベント ハブを構成することもできます。

イベント ハブを作成するための Azure CLI コマンド

Azure CLI を使って新しいイベント ハブを作成するには、az eventhubs eventhub コマンド セットを実行します。 ここでは、演習で使うコマンドについて簡単に説明します。

command 説明
create 指定された名前空間にイベント ハブが作成されます。
show イベント ハブの詳細が表示されます。

Note

Event Hubs の異なるレベルのクォータと制限については、「Azure Event Hubs のクォータと制限」をご覧ください。

まとめ

Azure Event Hubs をデプロイするには、Event Hubs 名前空間を構成してから、イベント ハブ自体を構成する必要があります。 次のユニットでは、新しい名前空間とイベント ハブを作成する手順について詳しく説明します。