今天遇到一个开发Kafka时,遇到一个报错。
Magic v1 does not support record headers,即出现了Kafka的client与broker(server)出现版本不一致的问题。
2019-12-23 15:06:59.743 [http-nio-8846-exec-2] ERROR c.w.b.fms.common.exception.GlobalExceptionHandler - Exception {}
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:260)
at brave.kafka.clients.TracingProducer.send(TracingProducer.java:79)
at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:337)
at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:205)
问题找到了,解决就好弄了。
通过本地的brew list Kafka
可以看出本地service 使用的2.3.1版本。客户端选用2.0.1版本。
<!-- Kafka service:2.3.1 -->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
问题解决。