Error deserializing Avro message for id -1
阿新 • • 發佈:2020-12-24
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到的答案: