问题背景:
Kafka部署在内网,内网Java服务会使用Kafka收发消息,另外,Java服务会与其他第三方系统使用kafka实现数据同步,也就是外网也会发送消息到kafka,外网IP做了端口映射到了内网,advertised.listeners
配置了外网ip端口,所以这里的问题就是内网程序发送kafka消息也会走到外网,这样会有部分连接出现超时错误,所以这种方式不太合理。
解决办法:
参考网上内外网分流方式进行处理,外部访问kafka通过公网连接,内部程序使用内网访问。
listeners与advertised.listeners含义
1. listeners
含义:用于指定Kafka Broker实际监听的地址和端口,listeners 的格式通常是:协议名称://主机名或IP地址:端口
,可以同时配置多个, 并且用逗号隔开,监听器的名称和端口必须是唯一的,端口相同,就冲突了。
示例:
listeners=PLAINTEXT://your.host.name:9092
在这个示例中,Kafka Broker将监听your.host.name这个主机名上的9092端口,并使用PLAINTEXT协议(即不加密的文本协议)。
2.advertised.listeners
含义:
Kafka 服务器对外宣传的端点信息,它会将地址注册到Zookeeper中,用于告诉客户端应该连接到哪个地址和端口,也就是客户端真正要访问的地址。advertised.listeners