Event Hub とは「メッセージング」処理を提供するサービスです。
メッセージングとは、何でしょうか?
メッセージングとは、分離したシステム間でのメッセージのやりとりを指します。
通常だと、システム通信は1対1で行うのですが、この方式だと都合が悪い状況があります。
例えば、送信側は、メッセージを送信した後、受信側からの受取連絡をもらうまで、
待機状態が発生し、次の送信処理に移れません。
そこで登場するのが、Event Hub のようなメッセージングシステムです!!
Event Hub を利用するとイイことがあります。
非同期:送信側は受信側の状態を気にせず、メッセージ送信が可能。メッセージ保持機能。
負荷平準化:受信側はピーク時を避けてメッセージを処理できる。
負荷分散:受信側の数を増やす事で多くのメッセージを処理できる。
基本的には、[Service Bus トピック]と同様のメッセージングサービスなのですが、メッセージの取り込みに特化しており、[高スループット][高メッセージ処理]に重点が置かれています。※DLQやセッション機能がありません。
【Event Hub】
[特徴]
・送信側から受信側への一方向
・1メッセージ=多受信者 ※送信側と受信側に関係性は無い
・メッセージ送信の単位を[コンシューマーグループ]で仕分け、受信側に配信する。
・配信順序:FIFO(パーティション指定の場合)
・配信方法:At-Least-Once=最低1回送信。
・受信モード:コンシューマーグループはパーティション内の古いメッセージから順次読み取りを行うのですが、どこまで読み取ったかを記録するために、オフセット値(パーティション内での位置を示す値)を記録します。なので、受信側が障害などでダウンした場合でも、最初から読み取り始めるのでは無く、オフセット値から再開できます。
・排他方法:シングルスレッドなので不要。
・プロトコル:AMQP1.0、HTTP
・メッセージサイズ:256KB、1MB(Dedicatedプラン)
・キューサイズ:84GB(スループットユニットあたり)
・メッセージ保存期間:1~7日
それでは、作成してみましょう!!
[+新規]ー[モノのインターネット(IoT)]ー[Event Hubs]
名名前:表示名
価格レベル:※Dedicatedプランが存在します。
サブスクリプション:Azureサービスの提供範囲
リソースグループ:グループ名(複数のリソースを1つにグループ化する機能)
場所:デプロイするAzureのリージョン
スループットユニット:1~20。※TUあたり=1MBの受信,2MBの送信/sec
自動インフレを有効にしますか?:オートスケール機能
上限の指定:1~20。
作成した、Event Hub 名前空間 を選択し、[イベント ハブ]を選択
名前:表示名
パーティション数:2~32 ※作成後変更不可
メッセージの保持期間:1~7日。※パーティション内での保持期間
キャプチャ
時間枠:1~15分。指定間隔でストレージに保存
ウインドウのサイズ変更:10~500MB。指定容量でストレージに保存
コンテナー:アーカイブ先を指定
ストレージアカウント:コンテナーを選択すると自動入力される。
サンプルのキャプチャ ファイル名の形式:順序変更可能
作成した、イベント ハブを選択し、[コンシューマー グループ]を選択
※デフォルトで[$Default]名のコンシューマーグループが存在します。
名前:表示名
【サイジングについて】
1パーティションあたりの制限
・1 秒間で最大 1MB の受信イベント。または、1 秒間で最大 1000 件の受信イベント
・1 秒間で最大 2MB の送信イベント
※パーティションはあくまで、受信口にすぎません。数を多いほど、同時処理が捗ります。
[Basic、Standard]
1スループットユニットあたりの性能
・1 秒間で最大 1MB の受信イベント。または、1 秒間で最大 1000 件の受信イベント
・1 秒間で最大 2MB の送信イベント
・最大 84GB のイベント ストレージ
上記の結果から、パーティションの数だけを増やしても、パフォーマンスは向上しません。向上させるには、スループットユニットと同数以上のパーティションを作成する必要があります。
スループットユニット:1~20。※上限変更依頼可能