今儿在本机搭建 ThingsBoard 测试环境时,报错如下:
Error connecting to node kafka:9092 (id: 1001 rack: null)
kafka 是在本机 docker 环境中安装的,具体配置信息如下:
kafka:
restart: always
image: wurstmeister/kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: INSIDE://:9093,OUTSIDE://:9092
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9093,OUTSIDE://kafka:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
volumes:
- /var/run/docker.sock:/var/run/docker.sock
启动容器后,通过 localhost:9092
是可以访问通的
但是程序中配置 kafka 访问地址使用 localhost:9092
却会报开头所说的错误信息。
经过研究,容器配置中有这么一行 KAFKA_ADVERTISED_LISTENERS: INSIDE://:9093,OUTSIDE://kafka:9092
,这个 kafka:9092
正好对应到报错信息中的提示,猜测应该是需要通过该名称作为服务访问地址,而不能使用 ip 地址。
解决办法: 修改本机 hosts
文件,添加如下一行:
127.0.0.1 kafka
重新启动服务即可正常连接。