2016-04-27 21 views
2

私はkafkaでメッセージを生成/消費するためにC++ kafka libを使用しています。kafka消費者登録リスト(動物園)

ここで、切断や障害を処理するために消費者を監視したいと考えています。私はすべての消費者の接続リストの種類を探しています。カフカdocumentationから

消費イドレジストリ

グループ内のすべての消費者によって共有されるGROUP_IDに加えて、各消費者は、過渡、ユニークconsumer_idが与えられる(の識別のために という形式のホスト名:uuid)。コンシューマIDは で、次のディレクトリに登録されています。

/consumers/[group_id]/ids/[consumer_id] --> {"topic1": #streams, ..., "topicN": #streams} (ephemeral node) 

グループの消費者の各々は、そのグループの下に登録し そのconsumer_idとのznodeを作成します。 zノードの値は のマップ<topic, #streams>を含んでいます。このIDは、グループ内で現在アクティブなコンシューマのうち、それぞれ を識別するために使用されます。これは 一時ノードであるため、コンシューマプロセスが終了すると消滅します。

しかし ls /consumersにしようとしたとき - 何もありませんが(私のアプリが起動&実行されていて、消費者がログを経由してメッセージを消費している)

+0

@Edenhill stackoverflowに 'librdkafka'の特別なタグがありますか? – ItayB

答えて

1

でカフカ0.9クラスタ、唯一old-consumers(zookeeper-based offset storage)は「下に登録されている/消費者/ [group_idの]/ids/[consumer_id] "、new-consumer(kafka-based offset storage)は"/consumers/[group_id] "パスに登録されません。 (私のクラスタバージョンはkafka 0.9.0.1です)

+0

私はkafka_2.11.-0.9.0.1を使用しています。どのように消費者リストを取得するための任意の提案? – ItayB

1

librdkafkaの上位KafkaConsumerは、Apache Kafka 0.9の新しいブローカベースの均衡のとれたコンシューマグループに依存しており、ZooKeeperをまったく使用しません。

Kafkaディストリビューションのbin/kafka-consumer-groups.sh --new-consumer ..スクリプトを使用して、登録されたコンシューマ・グループをリストして説明することができます。 librdkafkaのCインターフェース(rd_kafka_list_groups())でこの同じ情報をプログラムで取得するAPIもあり、まもなくC++で利用可能になります。

+0

素晴らしい!それを見るのを待つことができない;-) – ItayB

+0

すべてのニュース?それは既に利用可能ですか? – ItayB

関連する問題