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类

解决 spring boot 访问 docker kafka 失败

spring boot 配置使用kafka

spring boot整合kafka

spring boot引入kafka