欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

canal匹配两类前缀相同表放入不同kafkatopic中

时间:2023-05-03
需求描述:

有两类表
tbl_ec_document_xxx(tbl_ec_document_11 tbl_ec_document_12 tbl_ec_document_xbk…)
tbl_ec_document_item_xxx(tbl_ec_document_item_11 tbl_ec_document_item_12 tbl_ec_document_item_xbk…)

普通perl正则可使用如下分别匹配含有item 和不含有item的所有表

^tbl_ec_document.((?!(item)).)*$^tbl_ec_document.*item+

现在想将不含有item的表放入->topic document中
含有item表放入->topic doitem中

但canal中对 ^ $ +不识别
所以按上述正则无法使用

解决方法:

将上述正则修改放入instance.properties 文件中

canal.instance.filter.regex = A.tbl_ec_document.*item.*,A.tbl_ec_document.((?!(item)).)*canal.instance.filter.query.ddl= truecanal.mq.partitionsNum=3#kafka topic #canal.mq.topic= test# 分区字段一般取主键,如果主键是联合主键,可用^符号连接canal.mq.partitionHash = A.tbl_ec_document.*item.*:FP^SE,A.tbl_ec_document.((?!(item)).)*:FP# 有些语句虽然不是ddl 但不是想要的insert update delete dml语句, 可以放入默认other topic中canal.mq.topic= other# 动态将不同规则数据放入对应的topic中canal.mq.dynamicTopic = docitem:A.tbl_ec_document.*_item.*,document:A.tbl_ec_document.((?!(item)).)*

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。