kafka connect连接器无法自动启动

时间:2019-02-25 22:09:15

标签: apache-kafka apache-kafka-connect

我有一个Kafka Connect源和接收器连接器,用于将数据放入Kafka并将其取出。

我正在使用docker-compose运行Kafka和Kafka Connect,后者在分布式模式下运行connect。可以看到它在连接启动时找到了我的插件,但是除非我对/ connectors API进行POST(包括JSON中的配置),否则它实际上不会执行任何操作。

我有一个带有配置的属性文件,我尝试将其放在/ etc下,在该文件中可以找到与已安装的其他插件类似的属性文件。

我在安装插件时是否缺少步骤,还是必须先通过REST API注册连接器,然后才能将其分配给工作人员?

2 个答案:

答案 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)。但是,如果您不使用汇合的集线器,我不确定是什么魔术。