首页 > 解决方案 > 将 kafka 连接器重命名为强制重启连接器

问题描述

我有这个相对简单的 postgres 源my-connector,作为debezium/connect:latestdocker 容器运行。

{"name":"my-connector","config":
{"connector.class":"io.debezium.connector.postgresql.PostgresConnector",
"database.user":"postgres",
"database.dbname":"postgres",
"slot.name":"my_slot",
"tasks.max":"1",
"database.server.name":"postgres",
"database.port":"5432",
"schema.whitelist":"public",
"database.hostname":"postgres",
"database.password":"mypass",
"name":"my-connector",
"tasks":[{"connector":"my-connector","task":0}],
"type":"source"}

如果我尝试使用 重新启动curl -i -X POST localhost:8083/connectors/my-connector/restart,我会收到一条成功的返回消息:

HTTP/1.1 204 No Content
Date: Mon, 22 Mar 2021 11:39:59 GMT
Server: Jetty(9.4.20.v20190813)

但是,我没有得到连接器将 postgres 表中的数据推送到相应的 kafka 主题的预期行为。作为一种解决方法,我可以创建一个具有相同配置的新连接器并将其名称更改为my-connector2,我将获得预期的行为。因此,我只想问是否有更优雅的重新启动连接器以实现预期的行为?

标签: apache-kafkaapache-kafka-connectdebezium

解决方案


这是预期的行为:

https://debezium.io/documentation/reference/tutorial.html#restarting-kafka-connect-service

Kafka Connect 服务启动,连接到 Kafka,读取前一个服务的配置,并启动注册的连接器,这些连接器将从上次停止的地方恢复。

您要做的是重置偏移量:

https://debezium.io/documentation/faq/#how_to_remove_committed_offsets_for_a_connector


推荐阅读