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

Spring Boot是否支持无ZooKeeper的Kafka?Kraft模式集成配置咨询

Spring Boot 集成 Kafka Kraft 模式(无 ZooKeeper)

支持情况说明

Spring Boot 完全支持连接无 ZooKeeper 的 Kafka Kraft 模式,前提是使用的 Spring Kafka 版本与 Kafka Kraft 版本兼容:

  • Spring Boot 2.6.x 及以上版本(对应 Spring Kafka 2.8.x+)正式支持 Kafka Kraft 模式,因为 Kafka 从 2.8.0 开始将 Kraft 从预览状态转为可用。
  • 建议保持 Spring Kafka 版本与你的 Kafka Kraft 集群版本主版本一致(比如 Kafka 3.5.x 搭配 Spring Kafka 2.9.x+),避免兼容性问题。

核心配置步骤

1. 确保依赖版本正确

如果使用 Maven,在 pom.xml 中引入 Spring Kafka Starter(Spring Boot 会自动管理兼容版本):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-kafka</artifactId>
</dependency>

如果是 Gradle:

implementation 'org.springframework.boot:spring-boot-starter-kafka'

2. 配置 application.yml / application.properties

关键是不需要配置任何 ZooKeeper 相关参数,只需指定 Kafka Kraft 集群的 bootstrap-servers(指向 Kraft 的控制器节点或 broker 节点,Kraft 中控制器和 broker 可以是同一节点)。

application.yml 示例:

spring:
  kafka:
    bootstrap-servers: kafka-node1:9092,kafka-node2:9092,kafka-node3:9092  # 替换为你的Kraft集群地址
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: my-kraft-consumer-group
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      auto-offset-reset: earliest

application.properties 示例:

spring.kafka.bootstrap-servers=kafka-node1:9092,kafka-node2:9092,kafka-node3:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.group-id=my-kraft-consumer-group
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.auto-offset-reset=earliest

3. 编写生产者/消费者代码

和传统 Kafka 集成的代码完全一致,因为 Spring Kafka 对上层屏蔽了底层是 ZooKeeper 还是 Kraft 的差异。

生产者示例:

import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

@Component
public class KraftKafkaProducer {
    private final KafkaTemplate<String, String> kafkaTemplate;

    public KraftKafkaProducer(KafkaTemplate<String, String> kafkaTemplate) {
        this.kafkaTemplate = kafkaTemplate;
    }

    public void sendMessage(String topic, String message) {
        kafkaTemplate.send(topic, message);
    }
}

消费者示例:

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

@Component
public class KraftKafkaConsumer {
    @KafkaListener(topics = "test-kraft-topic", groupId = "my-kraft-consumer-group")
    public void consume(String message) {
        System.out.println("Received message from Kafka Kraft: " + message);
    }
}

注意事项

  • 确认 Kafka Kraft 集群的 bootstrap-servers 地址正确,且端口(默认9092)对外开放,Spring Boot 应用能正常访问。
  • 如果你的 Kafka Kraft 集群开启了 SASL 认证或 SSL 加密,只需在 Spring Kafka 配置中添加对应的认证参数即可,和传统 Kafka 配置方式一致。
  • 若遇到版本兼容性问题,可手动指定 Spring Kafka 版本,确保与 Kafka Kraft 集群版本匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:25:22