Event Hubs とは
Azure Event Hubs は、データをある場所から別の場所に転送して更なる処理や分析をするためのストリーミングデータインジェストサービスのこと。なんらかのデータイベントが発生するたびにストリーミング処理を行うことからイベントインジェスターともいう。
イベントインジェスターとは、例えば イベント駆動ドリブン はイベントパブリッシャー・イベントコンシューマーを構成するが、そのイベントを処理するためにイベントパブリッシャーとイベントコンシューマーの間に置かれる。
Event Hubs はフルマネージドの PaaS であるため、Kafka などを用いたい場合におけるクラスター管理・構成などの設計・構築が大幅に軽減される。 今回は Spring Boot アプリケーションから Event Hubs を使用する手順に関してまとめていく。
やってみる
リソースを準備する
- Event Hubs を構築するには 公式のクイックスタート を活用すると良さそう。
- ソースコードに関しては、公式が提供している Java を使用して Azure Event Hubs との間でイベントを送受信する (azure-messaging-eventhubs) の手順に沿ってサンプル実装を行う
- 補足:仕事の Kafka アプリケーションを Java で書いているため今回は Java で試す。
- 送信イベント用 Maven プロジェクトと受信イベント用 Maven プロジェクトを作成して送受信を試す
- 以後は 注意点のみ記載しているため詳細な手順は上記チュートリアルを確認すること
送信イベント用 Maven プロジェクトの注意点
Maven で作成した Empty Project の pom.xml に以下を追加する。
- この際、必ず Maven をリロードすること。
Event Hubs へ接続する際に使用する接続文字列の取得方法
|
|
- 詳細についてはこちらに確認手順が書かれているため参照のこと。
受信イベント用 Maven プロジェクトの注意点
Azure Storage と BLOB コンテナーを作成する
Azure Storage Blob に関する概要は別記事にまとめた。
依存関係の追加
- 送信イベント用プロジェクトと同様に pom.xml ファイルを更新後リロードすることを忘れないようにする
終わりに
手順どおりにやればかなり簡単にできた。次はこちらを試す。
References
- https://docs.microsoft.com/ja-jp/azure/event-hubs/event-hubs-for-kafka-ecosystem-overview
- https://buildersbox.corp-sansan.com/entry/2020/11/06/110000
- Advanced Message Queuing Protocol (AMQP) とは Azure Event Hubs でも使われている代表的なメッセージングプロトコルの一つ。
- https://docs.microsoft.com/ja-jp/azure/event-hubs/event-hubs-scalability#partitions
パーティションは “コミット ログ” として考えることができます。 イベント本体、イベントを表すユーザー定義のプロパティ バッグ、メタデータ (パーティションにおけるオフセット、ストリーム シーケンスにおける番号、イベントが受理されたサービス側のタイムスタンプなど) を含んだイベント データがパーティションに格納されます。