Spring Boot、Spring-Kafka 和 Spring-Cloud 兼容性
Posted
技术标签:
【中文标题】Spring Boot、Spring-Kafka 和 Spring-Cloud 兼容性【英文标题】:Spring Boot, Spring-Kafka, and Spring-Cloud compatibility 【发布时间】:2019-05-01 08:21:05 【问题描述】:我的问题是关于 Spring-Kafka 和 Spring Cloud 的兼容性。
我正在使用以下版本:
Kafka 代理 1.0.2 Spring Boot 1.5.2 春季卡夫卡 1.2.2 Spring Cloud Stream Chelsea.SR2 (Spring Cloud Stream Core 1.2.2.RELEASE)前几天在另一个SO question问过Spring-Kafka和Spring Boot的兼容性问题。 Spring-Kafka project page 更新了有关兼容性的更多详细信息。项目网站声明如下:
所有brokers >= 0.10.x.x的用户(以及所有spring boot 1.5.x的用户)推荐使用spring-kafka 1.3.x版本
Spring Cloud Stream 和 Spring-Kafka 的 compatibility matrix 声明:
Spring Cloud Stream 1.2.x 与 Spring-Kafka 1.2.x、1.1.x 兼容。
Spring-Kafka 项目页面建议我升级到 1.3.X,但是我的 Spring Cloud Stream 版本不兼容 Spring-Kafka 1.3.X。
我希望将我的 Spring-Kafka 版本升级到 1.3.8。但我不想破坏 Spring Cloud Stream。
有没有人有过使用新版本的 Spring-Kafka 和旧版本的 Spring Cloud Stream 的经验?
【问题讨论】:
【参考方案1】:Spring Boot 1.5.2 非常旧(2017 年初)。当前的 Boot 1.5.x 版本是 1.5.18(今天发布)。
如果你使用 Initializr 启动一个新的 Spring Boot 1.5 项目,你会得到
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.18.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR5</spring-cloud.version>
<spring-kafka.version>1.3.8.RELEASE</spring-kafka.version>
</properties>
Edgware.SR5 引入了 Ditmars Spring Cloud Stream 发布系列 (1.3.3),如您所见,也使用了 spring-kafka 1.3.8。
因此,我建议您升级所有内容以获取最新版本。
【讨论】:
我可以将 Spring Boot 升级到 1.5.17 - 我没有用 1.5.18 测试过。我正在使用 Spring Cloud Dalston.SR5,我无法将其升级到较新的版本。 Chelsea SR2 也很古老;尝试使所有这些库保持最新状态会更好。也就是说,我只是用它运行了一个测试,并将kafka-clients
覆盖到 0.11.0.2 并且一个简单的处理器应用程序(输入/输出)工作没有任何问题。 YMMV。
加里,感谢您的反馈。我知道它已经很老了,但我坚持使用这个版本。以上是关于Spring Boot、Spring-Kafka 和 Spring-Cloud 兼容性的主要内容,如果未能解决你的问题,请参考以下文章
Failed to get nested archive for entry BOOT-INF/lib/spring-kafka-2.2.7.RELEASE.jar
Spring-Kafka.RecordIntercepter类未找到。找不到RecordIntercepter类