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端口连通性:
或用telnet命令:nc -zv <Ubuntu机器IP> 9092telnet <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
相关产品推荐
相关产品推荐

