You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.2.1升级后@EmbeddedKafka启动失败问题排查

问题解决方案:Spring Boot 3.2.1 下 @EmbeddedKafka 启动失败

核心原因

Spring Boot 3.2.x 默认依赖 Kafka 3.5.x 版本,该版本的 Kafka 测试组件(如 kafka.utils.TestUtils)依赖 Scala 类库,但 spring-kafka-test 并未自动引入这些依赖;同时 Kraft 模式下的协调器类也存在传递依赖缺失的问题,导致启动时出现类找不到的异常。

具体解决步骤

1. 补充缺失的依赖

在子模块的 pom.xml 中添加以下依赖,覆盖测试所需的 Kafka 核心、Scala 适配及协调器相关组件:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.5.1</version> <!-- 与Spring Boot 3.2.1匹配的Kafka版本 -->
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.13</artifactId>
    <version>3.5.1</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

注意:Scala版本(示例中为2.13)需与Kafka版本适配,Kafka 3.5.x 默认适配Scala 2.13。

2. 调整 @EmbeddedKafka 配置

保持使用 ZooKeeper 模式(kraft=false),并明确配置 broker 属性,避免自动模式切换引发的依赖问题:

@EmbeddedKafka(
    partitions = 1,
    brokerProperties = {
        "listeners=PLAINTEXT://localhost:9092",
        "port=9092",
        "kraft.enable=false"
    }
)

3. 统一父子模块依赖版本

在父模块的 pom.xml 中通过 dependencyManagement 锁定 Kafka 相关版本,避免子模块出现版本冲突:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.2.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.13</artifactId>
            <version>3.5.1</version>
        </dependency>
    </dependencies>
</dependencyManagement>

已知缺陷说明

Spring Boot 3.2.x 与 Kafka 3.5.x 的集成中,spring-kafka-test 存在传递依赖不全的问题,具体表现为 Kraft 模式协调器类、Scala 基础库未被自动引入。该问题已在 Spring Boot 社区被反馈,后续版本大概率会优化依赖传递逻辑,自动补足测试所需的 Kafka 相关依赖。

内容的提问来源于stack exchange,提问作者Sounak Saha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:17:36