apache-kafka - 将 kafka 连接器重命名为强制重启连接器
问题描述
我有这个相对简单的 postgres 源my-connector
,作为debezium/connect:latest
docker 容器运行。
{"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
,我将获得预期的行为。因此,我只想问是否有更优雅的重新启动连接器以实现预期的行为?
解决方案
这是预期的行为:
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
推荐阅读
- javascript - 如何双击打开角垫菜单?
- python-3.x - 使用 tkinter 函数“root.after”后,旋转编码器值看起来很粘
- docusignapi - DocuSign 可以动态添加签名页吗?
- c# - Prism 的区域管理器使对象保持活动状态
- flutter - ListView 的水平滚动按钮问题
- javascript - Java 的类概念和语法,尤其是封装和成员访问,与 Javascript 相比如何?
- testing - Jest 没有看到使用 test() 函数描述的测试,但可以使用它 ()
- java - 如何将列表拆分为具有所有相同元素的多个列表
- tcl - 快速字符串替换
- javascript - 如何在Angular 10+中使用带有模块而不是组件的路由