在 docker 上添加 MongoDB 接收器连接器?

Add MongoDB Sink Connector on docker?

我有一台 Ubuntu 机器,我按照以下步骤操作 运行 Confluent Platform with docker.

https://docs.confluent.io/platform/current/quickstart/ce-docker-quickstart.html

我可以很好地制作和订阅消息。

我正在尝试添加 MongoDB Sink Connector,以便与 mongo 数据库同步数据。

  1. 我已经下载了这个 zip 文件 https://www.confluent.io/hub/hpgrahsl/kafka-connect-mongodb

  2. 我用正确的 mongo 端点编辑了 etc/MongoDbSinkConnector.properties 文件

  3. 我已将 zip 文件上传到我的 Ubuntu 机器

  4. 我创建了一个包含以下内容的文件Dockerfile

    FROM confluentinc/cp-kafka-connect-base
    
    COPY hpgrahsl-kafka-connect-mongodb-1.4.0.zip /tmp/hpgrahsl-kafka-connect-mongodb-1.4.0.zip
    
    RUN confluent-hub install --no-prompt /tmp/hpgrahsl-kafka-connect-mongodb-1.4.0.zip
    
  5. 我执行了以下命令docker build . -t my-custom-image:1.0.0

    Sending build context to Docker daemon  15.03MB
    Step 1/3 : FROM confluentinc/cp-kafka-connect-base
     ---> 8fe065fffe44
    Step 2/3 : COPY hpgrahsl-kafka-connect-mongodb-1.4.0.zip /tmp/hpgrahsl-kafka-connect-mongodb- 
    1.4.0.zip
     ---> Using cache
     ---> ed2e4ec7ff97
    Step 3/3 : RUN confluent-hub install --no-prompt /tmp/hpgrahsl-kafka-connect-mongodb-1.4.0.zip
     ---> Using cache
     ---> 034f82e2e136
    Successfully built 034f82e2e136
    Successfully tagged my-custom-image:1.0.0
    

我错过了什么吗?我的 mongo 没有更新

我还需要编辑 docker-compose.yml 吗?

如何调试这个连接器,它有日志吗?

当您 运行 Kafka Connect 在 Docker(包括 cp-kafka-connect-base)图像下时,它通常处于 分布式 模式。要在此模式下创建连接器配置,您可以使用 REST 调用;它不会从平面文件加载配置(根据 独立 模式)。

您可以启动您创建的容器,然后使用 REST 调用手动创建连接器,或者您可以自动执行该 REST 调用 - 下面是在 Docker Compose 中执行此操作的示例:

  kafka-connect-01:
    image: confluentinc/cp-kafka-connect-base:6.2.0
    depends_on:
      - kafka
    ports:
      - 8083:8083
    environment:
      CONNECT_BOOTSTRAP_SERVERS: "kafka:29092"
[…]
    command: 
      - bash 
      - -c 
      - |
        #
        echo "Installing connector plugins"
        confluent-hub install --no-prompt hpgrahsl/kafka-connect-mongodb:1.4.0

        #
        echo "Launching Kafka Connect worker"
        /etc/confluent/docker/run & 

        #
        echo "Waiting for Kafka Connect to start listening on localhost ⏳"
        while : ; do
          curl_status=$$(curl -s -o /dev/null -w %{http_code} http://localhost:8083/connectors)
          echo -e $$(date) " Kafka Connect listener HTTP state: " $$curl_status " (waiting for 200)"
          if [ $$curl_status -eq 200 ] ; then
            break
          fi
          sleep 5 
        done
        echo -e "\n--\n+> Creating connector"
        curl -s -X PUT -H  "Content-Type:application/json" http://localhost:8083/connectors/mongo-connector/config \
            -d '{
              [… connector JSON config goes here …]
        }'
        sleep infinity

参考文献: