コンテンツにスキップ

Kafkaコネクタ

Kafkaコネクタは、Apache Kafkaトピックの読み取りと書き込みを行い、オプションでSASL/PLAIN認証をサポートします。

コネクタタイプ:

  • KafkaReader - コンシューマグループの一部としてトピックからメッセージをコンシューム
  • KafkaWriter - トピックにメッセージをプロデュース

コンシューマグループを使用してトピックからコンシューム:

{
"type": "KafkaReader",
"config": {
"brokers": ["localhost:9092"],
"topic": "sensor-events",
"groupId": "meddle-consumers"
}
}
{
"type": "KafkaReader",
"config": {
"brokers": [
"kafka-1.example.com:9092",
"kafka-2.example.com:9092",
"kafka-3.example.com:9092"
],
"topic": "factory.events",
"groupId": "meddle-factory-consumers",
"username": "kafka_user",
"password": "kafka_password"
}
}

トピックにメッセージをプロデュース:

{
"type": "KafkaWriter",
"config": {
"brokers": ["localhost:9092"],
"topic": "processed-events"
}
}
{
"type": "KafkaWriter",
"config": {
"brokers": [
"kafka-1.example.com:9092",
"kafka-2.example.com:9092"
],
"topic": "factory.processed",
"username": "kafka_user",
"password": "kafka_password"
}
}
  • brokers: ブートストラップブローカーアドレスのリスト(host:port
  • topic: Kafkaトピック名
  • groupId: (Reader)コンシューマグループ識別子
  • username: (オプション)SASL/PLAINユーザー名
  • password: (オプション)SASL/PLAINパスワード

groupIdは、Kafkaパーティションがリーダー間でどのように分散されるかを制御します:

  • 同じgroupIdを持つ複数のリーダーは、水平スケーリングのためにパーティションを共有します。
  • 異なるgroupId値を持つ複数のリーダーは、それぞれトピックストリームの完全なコピーを受け取ります。
  • オフセットはコンシューマグループごとにコミットされます。再起動時には最後にコミットされたオフセットから再開します。

ライターはLeastBytesバランサーを使用し、メッセージをパーティション間に分散させてブローカーごとの負荷を最小化します。単一のMeddleパイプライン内のメッセージが同じパーティションに到達することは保証されません。

  • 認証はusernamepasswordの両方が指定された場合にのみ有効になります。
  • コネクタはSASL/PLAINを使用します。本番環境ではネットワークレイヤーのTLS(ブローカー設定)と組み合わせて使用してください。
  • MQTT - デバイス向けの軽量パブ/サブ
  • AMQP - RabbitMQの代替
  • NATS - クラウドネイティブなパブ/サブの代替