首页/数据/数据工程与 ETL 速查/Canal 投递 Kafka 配置
CDC 与同步53 条

Canal 投递 Kafka 配置

Canal 支持把解析结果直接投递到消息队列:在 canal.properties 设置 canal.serverMode=kafka、kafka.bootstrap.servers 与主题,配合 canal.mq.partitionHash 按主键分区。投递后由下游作业消费,业务方不必再直连 Canal Server。

canal.properties 关键项

canal.properties 关键项
canal.serverMode = kafka
kafka.bootstrap.servers = 10.0.0.6:9092
canal.mq.topic = canal-orders
canal.mq.partitionHash = app.orders:id
serverModetcp(默认)/ kafka / rocketmq 等
动态主题canal.mq.dynamicTopic 可按库或表维度拆主题
分区哈希partitionHash 按主键哈希到分区,保持同键有序
语义至少一次投递,下游需按主键幂等
partitionHash 配错会让同一主键散落到多个分区,破坏消费侧的有序假设。

易错点

  • 动态主题规则写错,所有库表消息挤进一个主题,下游解析复杂化
  • 下游消费不幂等,Canal 重投批次时产生重复数据

数据来源与参考

  • Canal 官方文档(MQ 配置:Kafka/RocketMQ 接入)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌