You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过路由将多租户Mongo集合配置到对应Kafka主题

解决多租户MongoDB集合路由到不同Kafka主题的Debezium配置方案

你需要通过多个RegexRouter转换规则实现不同类型集合的分主题路由,核心思路是为每种集合类型配置独立的正则匹配与替换逻辑,以下是具体实现步骤和配置示例:

关键配置要点

  1. 扩展集合白名单:将所有需要同步的租户集合加入collection.whitelist,可用通配符简化配置(比如tenant*.circles,tenant*.triangle匹配所有租户的circles和triangle集合)。
  2. 多转换规则配置:Debezium支持同时配置多个transform,每个规则用唯一名称标识,按顺序执行匹配和替换操作。

完整配置示例

{
  "name": "mongodb-connector",
  "config": {
    "connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
    "mongodb.hosts": "your-mongodb-host:27017",
    "mongodb.name": "mongodb-source",
    // 枚举所有目标集合,或用通配符简化:"tenant*.circles,tenant*.triangle"
    "collection.whitelist": "tenant1.circles,tenant2.circles,tenant1.triangle,tenant2.triangle,tenant3.triangle",
    "transforms": "routerCircles,routerTriangles",
    
    // 处理circles集合路由到circleTopic
    "transforms.routerCircles.type": "org.apache.kafka.connect.transforms.RegexRouter",
    "transforms.routerCircles.regex": "(.*)\\.circles",
    "transforms.routerCircles.replacement": "circleTopic",
    
    // 处理triangle集合路由到triangleTopic
    "transforms.routerTriangles.type": "org.apache.kafka.connect.transforms.RegexRouter",
    "transforms.routerTriangles.regex": "(.*)\\.triangle",
    "transforms.routerTriangles.replacement": "triangleTopic"
  }
}

配置细节说明

  • transforms参数用逗号分隔多个转换规则的自定义名称(如routerCircles和routerTriangles),名称需唯一。
  • 正则(.*)\.circles会匹配所有以.circles结尾的集合名(比如tenant1.circles),并将其路由到circleTopic。
  • 同理,(.*)\.triangle匹配所有.triangle结尾的集合,路由到triangleTopic。

实用注意事项

  • 租户数量较多时,优先用通配符简化白名单配置,避免逐个列举租户集合。
  • 确保正则匹配逻辑精准,避免不同规则间出现冲突(比如不要用过于宽泛的正则导致集合被错误路由)。
  • 配置完成后,可启动连接器并检查Kafka主题的消息是否正确路由,再根据实际情况调整正则规则。

内容的提问来源于stack exchange,提问作者Liviu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:57:30