赞
踩
今天测试java连接kafka时启动报错,但明明在服务器上用命令是可以使用的:
生产者:
消费者
kafka 配置环境:CentOS 6.5 单机版kafka (非集群)
kafka 版本:kafka_2.12-2.6.0
zookeeper版本:apache-zookeeper-3.5.8-bin
java 依赖版本:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.11.0.0</version>
</dependency>
于是我开始找网上的各种解决方案,大多数人给出的答疑如下:
kafka配置文件config/server.properties中没有配置该参数,所以Broker没有对外发布,导致监听器没有注册到zookeeper中,外部连接者无法访问到我们已经开启的kafka服务。
advertised.listeners=PLAINTEXT://192.168.200.130:9092
我仔细检查了我的kafka配置文件以及zookeeper配置文件,甚至是springtboot中的application.properties文件,仍然是没有错误。
我就在想为什么服务器上能运行,java去连接的时候就不行呢?
排查了半个小时,我突然想到,会不会问题不出在软件层面上,而是连接上?
于是我把防火墙关闭,再次启动SpringBoot:
有时候微过细故,可能就耽误了工作的进度,所以在检查错误时,不要一味的关注某一个点,很有可能你的想法就被牢牢困住,无法发散出去。这种不起眼的bug耽误了我近半个小时的时间。
Linux防火墙关闭分两种,为了节约大家的开发时间,给大家把命令贴出来:
CentOS 7 以上:关闭防火墙:systemctl stop firewalld.service
关闭后,使用命令 systemctl status firewalld.service
查看防火墙状态
可以看到,disavtive(dead)的字样,说明防火墙已经关闭
CentOS 7 以下:(1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
(2) 即时生效,重启后失效开启: service iptables start
关闭: service iptables stop
一个是永久关闭,一个是即时关闭,大家根据需求自行执行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。