在 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 数据库同步数据。
我已经下载了这个 zip 文件 https://www.confluent.io/hub/hpgrahsl/kafka-connect-mongodb
我用正确的 mongo 端点编辑了 etc/MongoDbSinkConnector.properties
文件
我已将 zip 文件上传到我的 Ubuntu 机器
我创建了一个包含以下内容的文件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
我执行了以下命令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
参考文献:
我有一台 Ubuntu 机器,我按照以下步骤操作 运行 Confluent Platform with docker.
https://docs.confluent.io/platform/current/quickstart/ce-docker-quickstart.html
我可以很好地制作和订阅消息。
我正在尝试添加 MongoDB Sink Connector
,以便与 mongo 数据库同步数据。
我已经下载了这个 zip 文件 https://www.confluent.io/hub/hpgrahsl/kafka-connect-mongodb
我用正确的 mongo 端点编辑了
etc/MongoDbSinkConnector.properties
文件我已将 zip 文件上传到我的 Ubuntu 机器
我创建了一个包含以下内容的文件
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
我执行了以下命令
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
参考文献: