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

Spring Boot Kafka生产者/消费者如何连接远端运行Kafka&ZooKeeper的Ubuntu机器

解决Spring Boot Kafka生产者/消费者跨机器部署失效问题

1. 检查Kafka对外监听配置

Kafka默认绑定localhost,跨机器访问必须修改核心配置:

  • 编辑Ubuntu机器上的Kafka配置文件(通常路径为/opt/kafka/config/server.properties)
  • 修改advertised.listeners为Ubuntu机器的内网/公网IP或主机名:
    advertised.listeners=PLAINTEXT://192.168.1.100:9092
    
  • 同时设置listeners允许所有网卡监听:
    listeners=PLAINTEXT://0.0.0.0:9092
    
  • 重启Kafka服务生效:
    sudo systemctl restart kafka
    

2. 验证网络连通性

跨机器部署最常见的阻塞点是网络不通:

  • 在部署Jar包的机器上测试Kafka端口连通性:
    nc -zv <Ubuntu机器IP> 9092
    
    或用telnet命令:telnet <Ubuntu机器IP> 9092
  • 检查Ubuntu机器的防火墙规则,开放9092端口:
    sudo ufw allow 9092/tcp
    sudo ufw reload
    
  • 若使用云服务器,需额外检查安全组是否开放9092端口

3. 修正Spring Boot配置

确保应用配置指向正确的Kafka地址:

  • 打开application.yml或application.properties,确认bootstrap-servers配置为Ubuntu机器的IP:9092,而非localhost:
    spring:
      kafka:
        bootstrap-servers: 192.168.1.100:9092
    
  • 检查生产者、消费者的独立配置是否与全局配置一致,避免出现部分配置仍指向localhost的情况

4. 确认主题配置与权限

  • 在Ubuntu机器上检查目标主题是否存在:
    kafka-topics.sh --list --bootstrap-server localhost:9092
    
  • 若依赖自动创建主题,确认Kafka的auto.create.topics.enable参数为true(默认开启,若被关闭需手动创建主题)
  • 检查生产者/消费者代码中主题名称的拼写,Kafka主题名称大小写敏感

5. 日志定位具体问题

如果以上步骤未解决问题,通过日志找根源:

  • 查看Spring Boot应用的日志文件,重点关注org.apache.kafka相关的错误信息,比如连接超时、认证失败、主题不存在等
  • 查看Ubuntu机器上的Kafka日志(默认路径/var/log/kafka/server.log),排查是否有连接拒绝、权限错误等记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:40:37