Error deserializing Avro message for id -1
最近博主在工作中遇到过这种错误。
分析
该错误是由于kafka反序列化消息失败导致的。至于为啥失败,这得从项目说起。
话说博主接了一个项目,该项目由其他项目迁移过来修修补补,kafka消息监听也有很多。
于是乎,遇到新需求时,都是拷贝一份kafka配置过来,其中一份配置长这样:
props.put("key.deserializer",
"org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer",
"io.confluent.kafka.serializers.KafkaAvroDeserializer");
props.put("security.protocol", "SASL_PLAINTEXT");
props.put("sasl.mechanism", "PLAIN");
props.put("schema.registry.url", srURL);
虽然没见过KafkaAvroDeserializer,但是对于前辈的代码也不敢轻易修改,怕搞成这样:
于是就有了别人producer用的另一种序列化类,我这边反序列化类没对应上
org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id -1
org.apache.kafka.common.errors.SerializationException: Unknown magic byte!
解决
1、问kafka producer用的什么序列化类
2、 修改对应value.deserializer
props.put("value.deserializer", "改成你问好的类全路径");
贴一个google到的答案: