kafka 密钥的奇怪输出

Strange output from kafka key

我正在试验 Kafka Streams 并编写了一个简单的第一个应用程序。

我创建了一个主题,并在我的代码中调用:

final KStream<String, Upload> uploadStream = builder.stream(UPLOADS_TOPIC, Consumed.with(Serdes.String(), uploadSerde));

上传 serdes 使用 .avsc 文件创建,初始化为:

final SpecificAvroSerde<Upload> uploadSerde = new SpecificAvroSerde<>();
uploadSerde.configure(serdeConfig, false);

我已经输出内容使用:

uploadStream.foreach((k, v) -> System.out.println("uploadStream: Key: " + k + ", Value: " + v));

我的问题是输出的键值前面似乎有几个字符,我不确定这是否正确:

https://imgur.com/a/pL8y4

我有一个简单的驱动程序,它使用相同的 avro 架构。

那些奇怪的字符只是标准控制字符还是我的反序列化有问题?

您的生产者在写入时使用的密钥序列化程序 (KafkaAvroSerializer.class) 与您的消费者(即 KafkaStreams)在读取时使用的密钥序列化程序 (StringSerde) 不同——以使其正常工作, 两者都需要使用相同的 serializer/deserializer/serde class.

因此,您要么将生产者更改为使用 StringSerializer 而不是 KafkaAvroSerilalizer,要么将您的 Kafka Streams 应用程序更改为使用 SpecificAvroSerdeGenericAvroSerde 作为密钥阅读。