项目使用的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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。