创建kafka连接器,测试连接成功。
然后创建规则使用刚才的kafka连接器,测试就报错。
refuse 是emqx连kafka的网络不通
环境都在我本地,都是用docker启动的。
ip分别是172.17.0.3,172.17.0.4,我试了下,是可以通的。
还需要如何排查呢
就是不通 你再排查一下
我再排查下。
我配置过程中,都是用ip的,这里报错为什么是localhost呢
拉取 emqx 企业级镜像
docker pull emqx/emqx-enterprise:5.9.0
启动emqx调试容器
docker run -d --name emqx-enterprise -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx-enterprise:5.9.0
拉取 kafka 镜像
docker pull apache/kafka:4.0.0
启动 kafka 调试容器
docker run -d --name kafka-test -p 9092:9092 apache/kafka:4.0.0
进入容器
docker exec -it 容器id /bin/bash
cd /opt/kafka/bin
列出所有Topic
./kafka-topics.sh --list --bootstrap-server localhost:9092
创建测试Topic
./kafka-topics.sh --create --topic Test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
登录emqx管理ip:18083,默认admin/public
集成=》连接器=》创建kafka生产者连接器。宿主机ip:9092 =》这了我显示连接成功
集成=》规则 =》创建规则(默认就好)=》添加输出动作,选择kafka生产者=》选择刚才创建的kafka连接器,主题Test,名称随意 =》点击 测试连接 =》我这里就报错了。
不用集群,单体就有这个现象。
License,我用的申请试用 EMQX Enterprise 企业版。
你的Kafka的配置有问题,你可以从其它的机器上用kafka client连接一下试试,应该也会报相同的错误
我用其他的kafka客户端工具,只要配置ip:port,就能正常操作了。
我自己写代码,也是只配置ip:port就能对kafka正常的读写。
如果您想从宿主机访问Kafka,需要使用宿主机IP和映射端口,而不是容器内部的localhost:9092。
配置EMQX的Kafka桥接功能:需要确保它们处于同一网络或者能够相互访问。最佳实践是创建一个Docker网络,让两个容器都加入该网络。
docker启动kafka 4.0.0,要主动指定下面2个参数。
KAFKA_CFG_LISTENERS:监听器配置
作用:指定Kafka broker实际监听的网络接口和端口。
KAFKA_CFG_ADVERTISED_LISTENERS:广告监听器配置
作用:指定Kafka向客户端公布的连接地址。
谢谢帮忙排查问题。