Using out of the box console consumer (I am using Kafka 0.9.0.1) you can only print the key and the value of messages using different formats. To print the key, set the property print.key=true
.
There is another property key.separator
that by default is "\t" (a tab) that you can also change to anything you want.
To set these properties you can create a config file and use --consumer.config <config file>
or pass the properties using --property key=value
.
You can also implement your own formatter and use it with --formatter
option but you will still have just the key and value because that is what the MessageFormatter trait provides (see writeTo below).
trait MessageFormatter {
def writeTo(key: Array[Byte], value: Array[Byte], output: PrintStream)
def init(props: Properties) {}
def close() {}
}
For example:
./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