我有一个Kafka Connect源和接收器连接器,用于将数据放入Kafka并将其取出。
我正在使用docker-compose运行Kafka和Kafka Connect,后者在分布式模式下运行connect。可以看到它在连接启动时找到了我的插件,但是除非我对/ connectors API进行POST(包括JSON中的配置),否则它实际上不会执行任何操作。
我有一个带有配置的属性文件,我尝试将其放在/ etc下,在该文件中可以找到与已安装的其他插件类似的属性文件。
我在安装插件时是否缺少步骤,还是必须先通过REST API注册连接器,然后才能将其分配给工作人员?
答案 0 :(得分:0)
是的,在使用分布式模式时,必须使用REST API配置Kafka Connect。
尽管可以使用Docker Compose这样编写连接器的编写脚本:
command:
- bash
- -c
- |
/etc/confluent/docker/run &
echo "Waiting for Kafka Connect to start listening on kafka-connect ⏳"
while [ $$(curl -s -o /dev/null -w %{http_code} http://kafka-connect:8083/connectors) -eq 000 ] ; do
echo -e $$(date) " Kafka Connect listener HTTP state: " $$(curl -s -o /dev/null -w %{http_code} http://kafka-connect:8083/connectors) " (waiting for 200)"
sleep 5
done
nc -vz kafka-connect 8083
echo -e "\n--\n+> Creating Kafka Connect Elasticsearch sink"
/scripts/create-es-sink.sh
sleep infinity
其中/scripts/create-es-sink.sh
是来自curl
的REST调用,位于文件本地安装到容器中。
(source)
答案 1 :(得分:0)
您可以先安装Kafka连接器,然后再使用“ confluent-hub install”启动分布式Connect worker,如下所示:Install Kafka connector manually)。但是,如果您不使用汇合的集线器,我不确定是什么魔术。