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));
我的问题是输出的键值前面似乎有几个字符,我不确定这是否正确:
我有一个简单的驱动程序,它使用相同的 avro 架构。
那些奇怪的字符只是标准控制字符还是我的反序列化有问题?
您的生产者在写入时使用的密钥序列化程序 (KafkaAvroSerializer.class
) 与您的消费者(即 KafkaStreams
)在读取时使用的密钥序列化程序 (StringSerde
) 不同——以使其正常工作, 两者都需要使用相同的 serializer/deserializer/serde class.
因此,您要么将生产者更改为使用 StringSerializer
而不是 KafkaAvroSerilalizer
,要么将您的 Kafka Streams 应用程序更改为使用 SpecificAvroSerde
或 GenericAvroSerde
作为密钥阅读。
我正在试验 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));
我的问题是输出的键值前面似乎有几个字符,我不确定这是否正确:
我有一个简单的驱动程序,它使用相同的 avro 架构。
那些奇怪的字符只是标准控制字符还是我的反序列化有问题?
您的生产者在写入时使用的密钥序列化程序 (KafkaAvroSerializer.class
) 与您的消费者(即 KafkaStreams
)在读取时使用的密钥序列化程序 (StringSerde
) 不同——以使其正常工作, 两者都需要使用相同的 serializer/deserializer/serde class.
因此,您要么将生产者更改为使用 StringSerializer
而不是 KafkaAvroSerilalizer
,要么将您的 Kafka Streams 应用程序更改为使用 SpecificAvroSerde
或 GenericAvroSerde
作为密钥阅读。