web-dev-qa-db-ja.com

Kafka消費者はキー値のペアを取得

現在、KafkaとFlinkで作業しています。ローカルPCでkafka=を実行していて、消費されているトピックを作成しました。

Desktop\kafka\bin\windows> kafka-console-consumer.bat --zookeeper localhost:2181 -topic test

しかし、それは単にメッセージを取得している、 enter image description here

メッセージの詳細を取得する方法はありますか?時間を言うことができますか?キー? kafka documentationをチェックしましたが、このトピックについて何かを見つけられませんでした

25

すぐに使えるコンソールコンシューマー(Kafka 0.9.0.1を使用しています)を使用すると、異なる形式を使用してメッセージのキーと値のみを印刷できます。キーを印刷するには、プロパティprint.key=true

別のプロパティkey.separatorがあり、これはデフォルトで「\ t」(タブ)であり、必要に応じて変更することもできます。

これらのプロパティを設定するには、設定ファイルを作成して--consumer.config <config file>を使用するか、--property key=valueを使用してプロパティを渡します。

独自のフォーマッタを実装して--formatterオプションで使用することもできますが、キーと値だけが残っています。これは、MessageFormatter特性が提供するものです(以下のwriteToを参照)。

trait MessageFormatter {
    def writeTo(key: Array[Byte], value: Array[Byte], output: PrintStream)

    def init(props: Properties) {}

    def close() {}
}

例えば:

./bin/kafka-console-consumer.sh --new-consumer --bootstrap-server kafka-1:9092 --topic topic1 --property print.key=true --property key.separator="-" --from-beginning
key-p1
key-p2
key-p3
null-4
null-8
null-0
50

以下のコマンドを使用します。

kafka-console-consumer --bootstrap-server localhost:9092 --topic topic_name \ 
      --from-beginning --formatter kafka.tools.DefaultMessageFormatter \
      --property print.key=true --property print.value=true \
      --property key.deserialzer=org.Apache.kafka.common.serialization.StringD \
      --property value-deserializer=org.Apache.kafka.common.serialization.LongDeserializer
1
ankit kansal