是否可以在 Debezium 中配置 table_name => kafka 主题映射?
Posted
技术标签:
【中文标题】是否可以在 Debezium 中配置 table_name => kafka 主题映射?【英文标题】:Is it possible in Debezium to configure table_name => kafka topic mapping? 【发布时间】:2018-03-26 08:25:39 【问题描述】:我已阅读http://debezium.io/docs/connectors/mysql/,但我找不到任何关于是否可以配置 debezium 的信息,以便可以将来自 2 个(或更多)表的更改写入相同的单个 kafka 主题?在我看来,它总是 1 个表 -> 1 个主题。
【问题讨论】:
这似乎是可能的debezium.io/docs/configuration/topic-routing 但我不确定它是否要求 2 个表中的架构完全相同? 【参考方案1】:是的,使用Single Message Transforms,根据您确定的the link。您可以使用正则表达式 (regex) 将表映射到所需的主题。 io.debezium.transforms.ByLogicalTableRouter
或 org.apache.kafka.connect.transforms.RegexRouter
都可以解决问题。有后者的例子in this post here:
"transforms":"dropPrefix",
"transforms.dropPrefix.type":"org.apache.kafka.connect.transforms.RegexRouter",
"transforms.dropPrefix.regex":"DC1-TEST-(.*)",
"transforms.dropPrefix.replacement":"$1"
【讨论】:
ByLogicalTableRouter
可让您丰富主键,这在一个主题中包含来自多个表的事件时可能很有用。关于上面评论中的问题,它的原始用例是用于分片表,但它也应该适用于具有不同模式的表。以上是关于是否可以在 Debezium 中配置 table_name => kafka 主题映射?的主要内容,如果未能解决你的问题,请参考以下文章
table.include.list 配置参数在 Debezium Postgres 连接器中不起作用
Debezium MySQL 参数 table.exclude.list 不起作用