问题的原因
我是使用docker来安装并启动kafka 的,所以在启动过程中并没有太多需要配置的地方,基本都是从网上照搬照抄,没动什么脑子,所以看着启动起来了觉得就没事了,但是运行项目的时候发现,我明明已经配置好了远程连接kafka的地址,但是项目报错却是无法连接本地的localhost的kafka节点,这让我很纳闷,本着配置高于一切,我以为是我配置的地址有哪些地方冲突了,于是我便开始查找:nacos的配置文件路径是否正确,nacos中的配置是否正确,本地是否有配置冲突的地方,可是找了一圈发现并没有,于是我便开始百度,才发现,是我使用docker启动kafka时的一个问题导致了我的连接错误,好了如下贴代码
我们先从安装开始(如果你们已经安装好了那就可以忽略这一标题了)
前提条件,安装kafka启动kafka都需要依赖于zookeeper才行
#安装zookeeper
docker pull wurstmeister/zookeeper
#运行zookeeper,该命令会启动一个名为zookeeper的docker容器,并且他映射的端口是2181
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
#安装kafka
docker pull wurstmeister/kafka
#最重要的一步,启动kafka容器
docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka`
好了现在我们来说该问题产生的原因
如上述步骤中,我启动的kafka配置了KAFKA_ADVERTISED_LISTENERS
后面的localhost就是问题的根本
他会让远程连接的服务去该映射地址链接kafka,所以才会连接错误,所以我们只需要将localhost修改成我们对应的远程服务器的地址即可