Apache kafka 卡夫卡连接连接器不';我不能自动启动

Apache kafka 卡夫卡连接连接器不';我不能自动启动,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,我有一个卡夫卡连接源和接收器连接器,用于将数据放入卡夫卡并将其取出 我使用docker compose运行Kafka和Kafka Connect,docker compose以分布式模式运行Connect。请注意,它会在connect启动时找到我的插件,但实际上它不会做任何事情,除非我向/connectors API发送一个帖子,包括JSON中的配置 我有一个带有配置的属性文件,我试着把它放在/etc下,在那里我可以找到其他已安装插件的类似属性文件 安装插件时是否遗漏了一个步骤,或者在将连接器分

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

我使用docker compose运行Kafka和Kafka Connect,docker compose以分布式模式运行Connect。请注意,它会在connect启动时找到我的插件,但实际上它不会做任何事情,除非我向/connectors API发送一个帖子,包括JSON中的配置

我有一个带有配置的属性文件,我试着把它放在/etc下,在那里我可以找到其他已安装插件的类似属性文件


安装插件时是否遗漏了一个步骤,或者在将连接器分配给workers之前是否需要通过REST API注册连接器?

是的,使用分布式模式时,必须使用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调用


()

在启动分布式连接工作程序之前,可以使用“confluent hub install”安装Kafka连接器,如下所示:)。但是,如果您不使用confluent hub,我不知道有什么神奇之处。

那么,如果我基本上要通过REST发送配置,那么在/etc下保存属性文件有什么意义呢?:)如果你想在独立模式下运行它。明白了。看起来很傻,他们没有办法在分布式模式下自动配置它。谢谢你所需要做的就是向docker映像的plugin.path中添加一个Kafka Connect兼容JAR(eg),正如上面Robin公开的策略一样……Robin的上述回答也是一个两步过程,只是在docker init中编写了:1:启动连接应用程序,2:启动连接器(通过create es sink.sh)。您提供的aws链接正在使用独立模式(非分布式),并且似乎是特定于aws的(并且没有帮助)。即使是合流集线器方法也只是简单地颠倒顺序,但仍然需要两个步骤(安装连接器,然后运行连接)。任何非合流集线器连接器都将以相同的方式安装,并在启动后由工作人员自动触发,并在plugin.path处安装相应的连接器jar。。。如果您正在运行Kafka Connect群集,则无需执行任何其他操作,并且您的连接器AWS或其他任何组件都将以分布式模式轻松运行。我还以为这是你关于魔法步骤的问题:)