1. 程式人生 > 其它 >Error deserializing Avro message for id -1

Error deserializing Avro message for id -1

技術標籤:Java技術訊息中介軟體

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到的答案: