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

Spring Boot生产者连接KRaft模式Bitnami Kafka报错求助

解决Spring Boot生产者连接KRaft模式Kafka报UnsupportedVersionException的方案

核心原因分析

这个错误本质是Kafka客户端与broker的API协议版本不匹配,或是broker配置限制了可使用的协议版本。虽然Kafka 3.6原生支持METADATA和INIT_PRODUCER_ID这些基础API,但以下配置问题会触发该错误:


具体解决方案

1. 修正Kafka Broker的协议版本与监听配置

在你的docker-compose.yml中,确保Bitnami Kafka的环境变量符合KRaft模式要求,同时指定匹配版本的协议:

services:
  kafka:
    image: bitnami/kafka:3.6
    ports:
      - "9093:9093"
    environment:
      - KAFKA_CFG_NODE_ID=0
      - KAFKA_CFG_PROCESS_ROLES=controller,broker
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9092
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,PLAINTEXT_HOST://0.0.0.0:9093,CONTROLLER://:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:9093
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,CONTROLLER:PLAINTEXT
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
      - KAFKA_INTER_BROKER_PROTOCOL_VERSION=3.6  # 与broker版本保持一致
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true  # 自动创建主题(可选)

2. 调整Spring Boot Kafka客户端配置

在application.yml中,指定正确的bootstrap地址,并开启API版本自动协商,也可显式指定匹配broker的版本:

spring:
  kafka:
    bootstrap-servers: localhost:9093  # 对应docker中PLAINTEXT_HOST的监听地址
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      properties:
        api.version.request: true  # 开启API版本协商
        metadata.max.age.ms: 30000
        # 可选:强制客户端使用与broker匹配的版本
        broker.version.fallback: 3.6
        api.version.fallback.ms: 0

3. 统一Kafka客户端版本

Spring Boot 3.2.1默认依赖的Kafka客户端版本是3.5.1,你可以手动升级到与broker一致的3.6.0版本,消除版本差异:

  • Maven依赖:
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.6.0</version>
</dependency>
  • Gradle依赖:
implementation 'org.apache.kafka:kafka-clients:3.6.0'

4. 清理旧环境并重启

删除Kafka容器及数据卷(避免旧配置残留),再重新启动服务:

# 停止并清理容器和数据卷
docker-compose down -v
# 重新启动Kafka
docker-compose up -d
# 重启Spring Boot应用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 11:32:53