来自kafka键的奇怪输出

时间:2018-04-06 16:30:14

标签: apache-kafka apache-kafka-streams

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

我创建了一个主题,在我的代码中我打电话:

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

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

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架构。

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

1 个答案:

答案 0 :(得分:1)

您的制作人在写入时使用的是与您的消费者(即KafkaAvroSerializer.class)相关的不同密钥序列化程序(KafkaStreams),以使其正常工作,需要使用相同的序列化器/反序列化器/ serde类。

因此,您要么将生产者更改为使用StringSerde而不是StringSerializer,要么更改Kafka Streams应用程序以使用KafkaAvroSerilalizerSpecificAvroSerde来读取密钥。