Kafka Connect Replicator正则转换引发Topic重命名配置异常
Kafka Connect Replicator Topic重命名失败排查与修复
问题根源
错误Illegal topic name 'topicbase.${replaceDots}'的核心原因:
- Kafka Connect Replicator的
topic.rename.format配置不支持引用Connect Transform的别名(如${replaceDots}),混用Replicator原生重命名机制和Connect Transforms会导致占位符无法解析,生成非法topic名称。 - Transform配置存在遗漏:
transforms列表仅声明了extractAndReplace,未包含replaceDots,第二个Transform完全不生效。
修复方案
放弃topic.rename.format,通过单个RegexRouter Transform完成所有名称转换逻辑,直接生成目标topic名。
修改后的关键配置片段:
{ // 保留原有其他配置,仅替换Transform相关部分 "transforms": "renameTopic", "transforms.renameTopic.type": "org.apache.kafka.connect.transforms.RegexRouter", // 正则捕获源topic最后两个点分隔的字段(如topic1.a1.b1中的a1和b1) "transforms.renameTopic.regex": "^.*\\.(\\w+)\\.(\\w+)$", // 直接生成目标topic:前缀+捕获组1-捕获组2(横杠连接) "transforms.renameTopic.replacement": "topicbase.$1-$2", // 移除无效的topic.rename.format配置 // "topic.rename.format": "topicbase.${replaceDots}", }
转换逻辑验证
- 源topic
topic1.a1.b1→ 捕获a1和b1→ 转换为topicbase.a1-b1 - 源topic
topic2.c1.b1→ 捕获c1和b1→ 转换为topicbase.c1-b1
额外检查项
- 确保
transforms列表仅包含实际使用的Transform别名,多个Transform用逗号分隔(如需) - 保留
topic.auto.create: true,确保目标集群自动创建topic - 确认目标集群的topic命名规则允许
topicbase.xx-xx格式(无特殊字符、长度合规)
内容的提问来源于stack exchange,提问作者Snehanshu Bhattacharya
相关产品推荐
相关产品推荐

