在使用java客户端连接kafka时,怎么都连接不上,防火墙端口也开放了,后面查资料得知需要将修改kafka安装目录下的config/server.properties文件:
# 允许外部端口连接
listeners=PLAINTEXT://192.168.38.22:9092
但是这样在执行kafka生产者命令时又出现问题:Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
kafka启动后会在zookeeper的/brokers/ids下注册监听协议,包括IP和端口号,客户端连接的时候,会取得这个IP和端口号。原理是因为listeners和advertised.listeners的区别,advertised.listeners才是真正暴露给外部使用的连接地址,会写入到zookeeper节点中的。于是再次进行修改,把IP配置到advertised.listeners中:
# 允许外部端口连接
listeners=PLAINTEXT://192.168.38.22:9092
# 外部代理地址
advertised.listeners=PLAINTEXT://192.168.38.22:9092