使用Java Kafka Streams API。我想为我正在使用的主题选择新的键。新密钥将具有不同的类型。当我使用控制台使用者通过新键使用主题时,只能看到这些值。
valueStream
.map((key, value) -> new KeyValue(value.getBook_id(), value))
.peek((key, value) -> {
System.out.println("key: " + key); // prints key as expected
System.out.println("value: " + value); // prints value as expected
})
.to("foobartopic",
Produced.with(Serdes.Integer(),bookValueIntSerde));
使用“ foobartopic”的结果
预期结果相同,但键为非空白
。答案 0 :(得分:2)
您的生产者使用Serdes.Integer
进行密钥序列化,因此要通过kafka-console-consumer
以用户友好的格式打印密钥,您必须将--key-deserializer
设置为适当的值。您的情况是org.apache.kafka.common.serialization.IntegerDeserializer
。
./kafka/bin//kafka-console-consumer.sh --bootstrap-server :9092 --property print.key=true --from-beginning --topic foobartopic --key-deserializer=org.apache.kafka.common.serialization.IntegerDeserializer