如何自动运行 Kafka Connect 连接器(例如在生产中)?

CCA*_*CAA 5 apache-kafka apache-kafka-connect confluent-platform

有没有办法在 Kafka Connect 启动时自动加载(多个)Kafka Connect 连接器(例如在 Confluence Platform 中)?

到目前为止我发现了什么:

Confluence Docs 声明使用bin/connect-standalone 独立模式的命令以及工作线程和每个连接器的属性文件。

对于分布式模式,您必须通过 REST API 运行连接器。

https://docs.confluence.io/current/connect/userguide.html#standalone-modehttps://docs.confluence.io/current/connect/managing/configuring.html#standalone-example

是否有另一种方法,例如包含应在“connect-[standalone|distributed].properties”文件中运行的所有连接器(类似于在 ksql-server.properties 中提供 KSQL 查询文件),以便它们自动加载到Kafka Connect 的启动(例如在 Confluence 平台中)?

或者,即使在生产环境中,连接器是否也如上所述“手动”加载?

Gio*_*ous 4

通常,在分布式模式下运行 Kafka Connect 时,您必须使用 REST API。但是,您可以使用 docker compose 来编写连接器创建的脚本;\n@Robin Moffatt 写了一篇不错的文章

\n\n
kafka-connect:\n  image: confluentinc/cp-kafka-connect:5.1.2\n  environment:\n    CONNECT_REST_PORT: 18083\n    CONNECT_REST_ADVERTISED_HOST_NAME: "kafka-connect"\n    [\xe2\x80\xa6]\n  volumes:\n    - $PWD/scripts:/scripts\n  command: \n    - bash \n    - -c \n    - |\n      /etc/confluent/docker/run & \n      echo "Waiting for Kafka Connect to start listening on kafka-connect \xe2\x8f\xb3"\n      while [ $$(curl -s -o /dev/null -w %{http_code} http://kafka-connect:8083/connectors) -eq 000 ] ; do \n        echo -e $$(date) " Kafka Connect listener HTTP state: " $$(curl -s -o /dev/null -w %{http_code} http://kafka-connect:8083/connectors) " (waiting for 200)"\n        sleep 5 \n      done\n      nc -vz kafka-connect 8083\n      echo -e "\\n--\\n+> Creating Kafka Connect Elasticsearch sink"\n      /scripts/create-es-sink.sh \n      sleep infinity\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

笔记:

\n\n
    \n
  • 在命令部分,$替换为$$以避免错误\n“命令”选项的插值格式无效

  • \n
  • sleep infinity是必需的,因为我们\xe2\x80\x99 已将进程发送/etc/confluent/docker/run到\n后台线程 ( &),因此如果主\n command完成,容器将退出。

  • \n
  • 配置连接器的实际脚本是\n curl单独文件中的\n 调用。您可以将其构建到 Docker\n Compose 中,但感觉有点恶心。

  • \n
  • 如果您想在启动 Kafka Connect 之前安装自定义连接器插件,则可以结合使用此技术和上面的技术,例如\n confluent-hub install --no-prompt confluentinc/kafka-connect-gcs:5.0.0 /etc/confluent/docker/run

  • \n
\n
\n