Kafka消費印刷メッセージフォーマットの設定

1661 ワード

通常、kafkaをテストする場合、kafka-console-consumerを使用してメッセージが消費されるかどうかを確認します.kafkaが公式に提供するコンソール消費メッセージツールに名前を変更し、このコマンド(sh kafka-console-consumer.sh)を直接相殺することでシーンのみをテストできます.
デフォルトでは、このコマンドは、消費メッセージの印刷時にメッセージの値のみを印刷します.
createTime、key、またはメッセージをより友好的に表示するなど、より多くのメッセージの情報を表示する場合は、関連する構成を指定できます.
  sh kafka-console-consumer.sh ... --property print.key=true key 

もちろん他の設定も使えます.次のようになります.
if (props.containsKey("print.timestamp"))
  printTimestamp = props.getProperty("print.timestamp").trim.equalsIgnoreCase("true")
if (props.containsKey("print.key"))
  printKey = props.getProperty("print.key").trim.equalsIgnoreCase("true")
if (props.containsKey("key.separator"))
  keySeparator = props.getProperty("key.separator").getBytes
if (props.containsKey("line.separator"))
  lineSeparator = props.getProperty("line.separator").getBytes
// Note that `toString` will be called on the instance returned by `Deserializer.deserialize`
if (props.containsKey("key.deserializer"))
  keyDeserializer = Some(Class.forName(props.getProperty("key.deserializer")).newInstance().asInstanceOf[Deserializer[_]])
// Note that `toString` will be called on the instance returned by `Deserializer.deserialize`
if (props.containsKey("value.deserializer"))
  valueDeserializer = Some(Class.forName(props.getProperty("value.deserializer")).newInstance().asInstanceOf[Deserializer[_]])

もちろん,以上が要求を完全に満たすことができなければ,カスタムメッセージ表示フォーマットを開発することができる.
1.   MessageFormatter , init,writeTo,close 
2.   --format