使用RegexRouter SMT的 ReplicatorSourceConnector未对主题进行重命名

编程语言 2026-07-09

我在 RegexRouter SMT上遇到一个未重命名主题的问题。我正在使用Confluent的 ReplicatorSourceConnector 在集群之间复制消息并进行主题重命名。

现有设置

源主题:app.service-internal.events-backfilling-ids
目标主题:app.service.events-ingestion-ids

使用 RegexRouter SMT来重命名主题:

"connector.class": "io.confluent.connect.replicator.ReplicatorSourceConnector",
"topic.whitelist": "app.service-internal.events-backfilling-ids",

"transforms": "formatName",
"transforms.formatName.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.formatName.regex": "app\\.(.*)\\-internal\\.events-backfilling-ids",
"transforms.formatName.replacement": "app.$1.events-ingestion-ids"

....

问题

当使用 RegexRouter SMT时,连接器不会复制消息。然而,当我将 transforms.* 部分替换为 "topic.rename.format": "app.service.events-ingestion-ids" 时,复制工作正常,因此其余配置(安全性、转换器、集群连通性等)似乎没问题。

我还尝试在 transforms.* 字段的同时添加 "topic.rename.format": "${topic}",但无济于事。

解决方案

对于Confluent Replicator,优先考虑 topic.rename.format 用于主题重命名。对常规源连接器,请使用 RegexRouter,但不要指望它在Replicator内部的行为也是一样的。

由于在你的场景中 topic.rename.format 可用,我就保留它。它更简单、清晰,也更符合Replicator的期望配置模型。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章