場景1: 在一個事務(wù)里插入兩條數(shù)據(jù),會被拆分成兩個消息(in kafka)
環(huán)境配置: canal 版本v.1.1.5 + kafka (topic-partition設(shè)置為1)
canal.mq.flatMessage = true (消息以json的格式保存)
將配置進(jìn)行更改: canal.mq.flatMessage = false(消息以PB的格式保存)侮腹,一個事務(wù)會保存在一個消息體里,問題解決>鸥(但沒明白事務(wù)一致性椎瘟,為什么會受數(shù)據(jù)存儲格式的影響) 【已在官網(wǎng)發(fā)了個issue https://github.com/alibaba/canal/issues/3850】
場景2: 在一個事務(wù)里插入8條數(shù)據(jù),會被拆分成兩個消息(in kafka)
環(huán)境配置: canal 版本v.1.1.5 + kafka (topic-partition設(shè)置為1)
canal.mq.flatMessage = false
canal.mq.canalBatchSize = 20
kafka.batch.size = 16384
將配置更改為:
kafka batch.size: the size of a micro-batch of the producer, the default is 16K
kafka.batch.size = 32768 (不要超過1M, kafka.max.request.size)
canal.mq.canalBatchSize: get the batch size of binlog data, the default is 50K
canal.mq.canalBatchSize = 50
一個事務(wù)會保存在一個消息體里侄旬,問題解決肺蔚!