使用Spring-Kafka往Kafka Broker发送消息出现下面的异常信息:
不管是不是Spring-Kafka这个封装好的组件还是其它包装好的工具,大部分都是依赖kafka-clients。java.lang.IllegalArgumentException: Magic v1 does not support record headers
at org.apache.kafka.common.record.MemoryRecordsBuilder.appendWithOffset(MemoryRecordsBuilder.java:403)at org.apache.kafka.common.record.MemoryRecordsBuilder.appendWithOffset(MemoryRecordsBuilder.java:442)at org.apache.kafka.common.record.MemoryRecordsBuilder.append(MemoryRecordsBuilder.java:499)at org.apache.kafka.common.record.MemoryRecordsBuilder.append(MemoryRecordsBuilder.java:522)at org.apache.kafka.clients.producer.internals.ProducerBatch.tryAppend(ProducerBatch.java:107)at org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:222)at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:814)at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:768)at org.springframework.kafka.core.DefaultKafkaProducerFactory$CloseSafeProducer.send(DefaultKafkaProducerFactory.java:285)at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:349)at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:188)at org.springframework.kafka.core.KafkaTemplate.sendDefault(KafkaTemplate.java:166)
经过排查发现是client与broker(server)出现版本不一致的问题。我这边使用springboot 2.0,并且默认依赖的Spring-Kafka版本就是1.0.x及以上了。但是Broker却是0.10.1版本,所以也能很明显的知道他们进行了版本号校验,只要把kafka server,即broker版本升级为1.0.x及以上的版本即可解决。相信会有不少人也会遇到,希望对你有帮助吧~