emqx企业版创建规则引擎 sink数据到kafka失败

试用emqx企业版(emqx-enterprise:5.4.1),在创建规则引擎时,将mqtt中的数据sink到kafka,但是在创建动作的时候,选择kafka生产者 ,然后测试连接,发现连接失败 ,具体报错如下:400 TEST_FAILED: {disconnected,#{error => no_connected_partition_leader,kafka_client => <<“probe:kafka_producer:probedryrun”>>,kafka_topic => “real_time_data”}},请问这个该如何解决?

可能是 Kafka 主题的问题,你需要先创建好 real_time_data 主题,并使用 Kafka 的命令行工具测试过之后,再创建 emqx 的 Kafka 规则。

real_time_data 主题已经创建了,kafka命令行工具我也试过了,是可以的,kafka连接器也能连上,但是创建规则就是不行

那很可能是因为分区的 IP 地址访问不通。你可以吧 kafka 的客户端测试工具(可以是 kafka 命令行工具,也可以是自己写的 Python 测试脚本)放到 emqx 所在的机器上试试看。

你也可以抓一下 Kafka 的 metadata 报文,看看里面分区的 IP 地址是不是内网地址。如果是这个原因,你需要配置一下 advertised.listeners:

https://cwiki.apache.org/confluence/display/KAFKA/KIP-103%3A+Separation+of+Internal+and+External+traffic

搞定了,原因是因为emqx是用docker安装的,kafka是用物理机部署的,导致网络不通