diff --git a/Canal-Kafka-RocketMQ-QuickStart.md b/Canal-Kafka-RocketMQ-QuickStart.md index 1679770..ecee309 100644 --- a/Canal-Kafka-RocketMQ-QuickStart.md +++ b/Canal-Kafka-RocketMQ-QuickStart.md @@ -100,9 +100,32 @@ canal.mq.acks = all | canal.mq.flatMessage | 是否为json格式
如果设置为false,对应MQ收到的消息为protobuf格式
需要通过CanalMessageDeserializer进行解码 | true | | --- | --- | --- | | canal.mq.topic | mq里的topic名 | 无 | +| canal.mq.dynamicTopic | mq里的动态topic规则, 1.1.3版本支持 | 无 | | canal.mq.partition | 单队列模式的分区下标, | 1 | | canal.mq.partitionsNum | 散列模式的分区数 | 无 | -| canal.mq.partitionHash | 散列规则定义
库名.表名 : 唯一主键,比如mytest.person: id | 无 | +| canal.mq.partitionHash | 散列规则定义
库名.表名 : 唯一主键,比如mytest.person: id
1.1.3版本支持新语法,见下文 | 无 | + +### canal.mq.dynamicTopic 表达式说明 + +canal 1.1.3版本之后, 支持配置格式:schema.table,多个配置之间使用逗号分隔 +* 例子1:test\\\\.test 指定匹配的单表,发送到以 test\\\\.test为名字的topic上 +* 例子2:.\\\\..\* 匹配所有表,每个表都会发送到各自表名的topic上 +* 例子3:test 指定匹配对应的库,一个库的所有表都会发送到库名的topic上 +* 例子4:test\\\\.* 指定匹配的表达式,针对匹配的表会发送到各自表名的topic上 +* 例子5:test,test1\\\\.test1,指定多个表达式,会将test库的表都发送到test的topic上,test1\\\\.test1的表发送到对应的test1\\\\.test1 topic上,其余的表发送到默认的canal.mq.topic值 + +### canal.mq.partitionHash 表达式说明 + +canal 1.1.3版本之后, 支持配置格式:schema.table:pk1^pk2,多个配置之间使用逗号分隔 +* 例子1:test\\\\.test:pk1^pk2 指定匹配的单表,对应的hash字段为pk1 + pk2 +* 例子2:.\\\\..\*:id 正则匹配,指定所有正则匹配的表对应的hash字段为id +* 例子3:.\\\\..\*:$pk$ 正则匹配,指定所有正则匹配的表对应的hash字段为表主键(自动查找) +* 例子4: 匹配规则啥都不写,则默认发到0这个partition上 +* 例子5:.\\\\..\* ,不指定pk信息的正则匹配,将所有正则匹配的表,对应的hash字段为表名 + * 按表hash: 一张表的所有数据可以发到同一个分区,不同表之间会做散列 (会有热点表分区过大问题) +* 例子6: test\\\\.test:id,.\\\\..\* , 针对test的表按照id散列,其余的表按照table散列 + +大家可以结合自己的业务需求,设置匹配规则,多条匹配规则之间是按照顺序进行匹配(命中一条规则就返回) 其他详细参数可参考[Canal AdminGuide](https://github.com/alibaba/canal/wiki/AdminGuide)