使用kafka连接器创建规则报错

创建kafka连接器,测试连接成功。


然后创建规则使用刚才的kafka连接器,测试就报错。

refuse 是emqx连kafka的网络不通

环境都在我本地,都是用docker启动的。
ip分别是172.17.0.3,172.17.0.4,我试了下,是可以通的。
还需要如何排查呢

就是不通 你再排查一下

我再排查下。
我配置过程中,都是用ip的,这里报错为什么是localhost呢

@lianghongle 集群的配置文件可以发一下看看吗?

拉取 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向客户端公布的连接地址。

谢谢帮忙排查问题。