【问题标题】:Add MongoDB Sink Connector on docker?在 docker 上添加 MongoDB Sink 连接器?
【发布时间】:2021-11-03 07:14:37
【问题描述】:

我有一台 Ubuntu 机器,我按照这些步骤使用 docker 运行 Confluent Platform。

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

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

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

  1. 我已经下载了这个压缩文件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

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

【问题讨论】:

    标签: mongodb docker apache-kafka apache-kafka-connect confluent-platform


    【解决方案1】:

    当您在 Docker(包括cp-kafka-connect-base)映像下运行 Kafka Connect 时,它通常处于 分布式 模式。要在此模式下创建连接器配置,请使用 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
    

    参考资料:

    【讨论】:

    • 嗨罗宾,实际上我刚刚解决了这个问题,在 youtube 上查看了您的博客和视频之后。非常感谢:D
    猜你喜欢
    • 2018-04-20
    • 2020-07-26
    • 2017-03-07
    • 2018-11-22
    • 2021-12-22
    • 2017-11-10
    • 2016-06-13
    • 2019-02-16
    • 2019-06-22
    相关资源
    最近更新 更多