写入主题时缺少键

时间:2019-02-05 11:45:16

标签: apache-kafka apache-kafka-streams

使用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”的结果 actual result

预期结果相同,但键为非空白

1 个答案:

答案 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