MS_KafkaDotNetClient - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Kafka .NET クライアント

概要

Confluent 社製

  • Apache Kafka の最初の開発者によって設立された Confluent 社
  • デジタルビジネスに不可欠なイベントストリーミングプラットフォームを提供

詳細

事前に、
Kafka エンドポイント付きの Azure Event Hubs を構築
しておく。

インストール

NuGet でインストールする。

補足(パッケージ名): NuGet パッケージ名は Confluent.Kafka で、
ネイティブの librdkafka を同梱している
librdkafka.redist が依存関係として入る)。
Linux / Windows / macOS の各ランタイムが含まれるため、
通常は追加のネイティブ ライブラリ導入は不要である。

実装

以下、証明書の部分はコメントアウトした。
SslCaLocation で、cacert.pem を指定している)

azure-event-hubs-for-kafka

より洗練された実装

https://github.com/OpenTouryoProject/DataPipeline/tree/develop/Gateway/Kafka/Client/CS

認証

SAS

既定では SAS トークンを使用する。

補足(SASL_SSL / PLAIN の組み合わせ): Event Hubs の
Kafka エンドポイントでは、SecurityProtocol=SaslSsl
SaslMechanism=Plain とし、
ユーザー名に $ConnectionString(固定文字列)、
パスワードに接続文字列そのもの
を渡すという独特の形になる。
「PLAIN」だが TLS の中を通るので平文で流れるわけではない。

OAuth

1.5 からサポートがあるらしいが、サンプルが無い。

補足(現在は OAuth も使える): Confluent.Kafka は現在
SaslMechanism.OAuthBearer をサポートしており、
OAuthBearerTokenRefreshHandler でトークンを供給する形で実装する。
Event Hubs 側も Microsoft Entra ID による OAuth 認証に対応しているため、
接続文字列(共有キー)を配らずに済む
マネージド ID での接続が現在の推奨である。

証明書

  • インターフェイス上は SslCaLocation が存在。
  • クライアント証明書は使用できなさそう。

補足(用途が違う): SslCaLocation
サーバー証明書を検証するための CA 証明書を指定するもので、
クライアント認証用ではない。
クライアント証明書を出すには SslCertificateLocation /
SslKeyLocation を使う(mTLS)。
ただし Event Hubs の Kafka エンドポイントは mTLS に対応しないため、
「使用できなさそう」という元ページの観察は結果として正しい。

参考

本 Wiki 内


Tags: クラウド, Azure, .NET開発, .NET Core, .NET Standard

⚠️ **GitHub.com Fallback** ⚠️