项目使用的canal版本:1.1.4,使用rocketMQ进行消费
之前项目中一直是单库单表进行数据同步,后面遇到分表数据也需要进行同步,数据表是用户登录数据:user_login_info_0、user_login_info_1...共分了10张表,但不想配置多个表与topic,想有一种正则的写法只配置一个就行,需要重点关注canal.instance.filter.regex与canal.mq.dynamicTopic的写法,下面是可行的写法:

canal.instance.filter.regex=user\\.user_login_info_\\d+

canal.mq.dynamicTopic=user_user_login_info:user\\.user_login_info_\\d+

对于canal.instance.filter.regex下面这种写法也是可以的:

canal.instance.filter.regex=user\\.user_login_info_.*

但下面这种写法不生效:

canal.instance.filter.regex=user\\.user_login_info_[0-9]{2}

这种好像是canal 1.1.5版本的写法,没使用这个版本验证过,但在1.1.4的版本是无法使用的。
对于canal.mq.dynamicTopic=user_user_login_info:user\.user_login_info_\d+配置需要说明下:
user_user_login_info是topic,user是库名,user_login_info_\d+是表名,也就是user库下user_login_info_0、user_login_info_1...的表的数据变动都发送到user_user_login_info这个topic下。

可以参考下面的文章:
https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart
https://blog.csdn.net/god8816/article/details/117308235


步履不停
38 声望12 粉丝

好走的都是下坡路


« 上一篇
ES DSL学习