spring boot集成kafka因为版本不兼容导致报错的解决办法
背景:
spring boot 2.1.0 集成 kafka,报错:[org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor]: Constructor threw exception; nested exception
kafka依赖配置如下:
<!-- kafka 依赖 开始 --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency> <!-- kafka 依赖 结束 -->
从这篇文章https://blog.csdn.net/littlehaes/article/details/104590423得到启发,这篇文章是把spring boot进行了版本降级,但是因为要使用kafka的NewTopic特性,版本降级就不可行了,因此选择把spring-boot-starter-parent由2.1.0升级为2.5.0,启动项目不再报错。
推荐的spring boot版本如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
推荐的kafka依赖版本如下:
<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.3.4.RELEASE</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency>
spring boot的版本与kafka版本不兼容会报错,因此最好采用推荐的配置。
参考资料:
https://www.cnblogs.com/xiaostudy/p/14295850.html