比如mysql用了分库,从db1-db9,数据分发到rocketmq多个分区,然后我mq.yml是不是要这么设置 partitionHash: db1.table: pk db2.table: pk ...... 从代码看目前是不支持正则的 能否支持正则,比如 partitionHash: regex: db[1-9].table.pk
这么配置,插入1000条数据,16个分区每个分区都有1000个,不应该是1000个分发在这16个分区? - canalDestination: db1 topic: canal
partitionsNum: 16 partitionHash:
原提问者GitHub用户xesygao
目前RocketMQ并不支持在分区键中使用正则表达式。在Canal中,分区键的配置是通过一个Map对象来完成的,Map中的key是由"库名.表名"组成的字符串,value是唯一主键的字段名,例如:
partitionHash: db1.table1: id db2.table2: id 这样配置的含义是,对于db1中的table1和db2中的table2这两张表,将根据它们的id字段的值来进行分区。具体的分区算法是根据id值进行hash计算,然后将结果对分区总数取模,最终得到该条数据所属的分区编号。
如果要对多个库中的相同表使用相同的分区键,可以使用通配符"*",例如:
partitionHash: db1.: id db2.: id 这样配置的含义是,对于db1和db2中的所有表,都将根据它们的id字段的值来进行分区。如果要使用不同的分区键,可以分别配置不同的key值,例如:
partitionHash: db1.table1: id db2.table2: name 这样配置的含义是,对于db1中的table1和db2中的table2这两张表,分别根据它们的id和name字段的值进行分区。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。