我有一台Ubuntu机器,为了运行Confluent Platform和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
吗?
我如何调试这个连接器,它有日志吗?
当你在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
引用:
- https://rmoff.net/2018/12/15/docker-tips-and-tricks-with-kafka-connect-ksqldb-and-kafka/
- https://developer.confluent.io/learn-kafka/kafka-connect/docker/