問題的原因
我是使用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修改成我們對應的遠程服務器的地址即可