spring boot虽然解决了一大票jar包依赖的兼容问题,但是在kafka方面,却有一个小坑。
使用spring boot的时候如果要融合kafka,那么自然首推spring-kafka,那么就会面临一个问题:kafka-clients & spring-kafka & spring boot 之间会存在三方面的强一致的兼容问题。
2019-07-26 链接:https://spring.io/projects/spring-kafka

spring-kafka的版本和kafka-clients的版本对应关系
忽略中间的“Spring Integration for Apache Kafka Version”,此图是spring官方描述的spring-kafka的版本和kafka-clients的版本对应关系(1对多的关系)。坑点来了。

spring-kafka和spring boot的对应关系
1.如果用的是spring boot2.1.x,那么你必须使用spring-kafka的版本是2.2.x。否则就会出现noClass等等各种异常。
2.如果你用的是2.2.x的spring-kafka,只看第一张图,你会以为2.1.x的kafka-clients也可以用。但是spring说了,此时默认用的kafka-clients是2.0.x,如果你想用2.1.x,必须看文档附录,下图的大概意思,必须换掉下图所示的所有依赖版本。

文档附录截图
总结:仔细看看官方这么短的文档,就能避免的坑点,其实也不算什么大坑。并且,spring boot会默认匹配一个兼容的的spring-kafka版本,不需要单独指定spring-kafka的版本,pom引用的时候不加version即可。比如目前spring boot版本为2.1.6,spring kafka的版本默认为2.2.7。