MS_KafkaDotNetClient - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
Confluent 社製
- Apache Kafka の最初の開発者によって設立された Confluent 社
- デジタルビジネスに不可欠なイベントストリーミングプラットフォームを提供
事前に、
Kafka エンドポイント付きの Azure Event Hubs を構築
しておく。
NuGet でインストールする。
補足(パッケージ名): NuGet パッケージ名は
Confluent.Kafkaで、
ネイティブのlibrdkafkaを同梱している
(librdkafka.redistが依存関係として入る)。
Linux / Windows / macOS の各ランタイムが含まれるため、
通常は追加のネイティブ ライブラリ導入は不要である。
以下、証明書の部分はコメントアウトした。
(SslCaLocation で、cacert.pem を指定している)
- プロデューサー
https://github.com/Azure/azure-event-hubs-for-kafka/blob/master/quickstart/dotnet/EventHubsForKafkaSample/Worker.cs#L17 - コンシューマー
https://github.com/Azure/azure-event-hubs-for-kafka/blob/master/quickstart/dotnet/EventHubsForKafkaSample/Worker.cs#L48
https://github.com/OpenTouryoProject/DataPipeline/tree/develop/Gateway/Kafka/Client/CS
- プロデューサー
https://github.com/OpenTouryoProject/DataPipeline/tree/develop/Gateway/Kafka/Client/CS/Producer - コンシューマー
https://github.com/OpenTouryoProject/DataPipeline/tree/develop/Gateway/Kafka/Client/CS/Consumer
- Kafka の
SecurityProtocolで使用可能なもの。 -
Azure Event Hubs の Kafka エンドポイントの場合は、
以下が使用可能。
既定では SAS トークンを使用する。
補足(SASL_SSL / PLAIN の組み合わせ): Event Hubs の
Kafka エンドポイントでは、SecurityProtocol=SaslSsl、
SaslMechanism=Plainとし、
ユーザー名に$ConnectionString(固定文字列)、
パスワードに接続文字列そのものを渡すという独特の形になる。
「PLAIN」だが TLS の中を通るので平文で流れるわけではない。
1.5 からサポートがあるらしいが、サンプルが無い。
- Support for OAuthBearer SASL authentication mechanism
· Issue #871 · confluentinc/confluent-kafka-dotnet · GitHub
https://github.com/confluentinc/confluent-kafka-dotnet/issues/871
補足(現在は OAuth も使える):
Confluent.Kafkaは現在
SaslMechanism.OAuthBearerをサポートしており、
OAuthBearerTokenRefreshHandlerでトークンを供給する形で実装する。
Event Hubs 側も Microsoft Entra ID による OAuth 認証に対応しているため、
接続文字列(共有キー)を配らずに済む
マネージド ID での接続が現在の推奨である。
- インターフェイス上は
SslCaLocationが存在。 - クライアント証明書は使用できなさそう。
補足(用途が違う):
SslCaLocationは
サーバー証明書を検証するための CA 証明書を指定するもので、
クライアント認証用ではない。
クライアント証明書を出すにはSslCertificateLocation/
SslKeyLocationを使う(mTLS)。
ただし Event Hubs の Kafka エンドポイントは mTLS に対応しないため、
「使用できなさそう」という元ページの観察は結果として正しい。
-
Confluent | ネットワールド
https://www.networld.co.jp/product/confluent/ -
confluentinc/confluent-kafka-dotnet: Confluent's Apache Kafka .NET client
https://github.com/confluentinc/confluent-kafka-dotnet -
Confluent Documentation
Tags: クラウド, Azure, .NET開発, .NET Core, .NET Standard