开发者社区> 问答> 正文

canal往一个topic的多个分区传,canal.mq.partitionHash 不起作用

环境信息

canal version 1.1.2 mysql version 5.7.20

问题描述

canal.mq.topic=NewCanalDBTopic #canal.mq.partition=1

canal.mq.partitionsNum=5 canal.mq.partitionHash=...*

配置不起作用, 数据还是只会往NewCanalDBTopic 的partition 0分区传, 其余分区都没有消息进来。

原提问者GitHub用户iushas

展开
收起
古拉古拉 2023-05-08 13:38:42 339 0
2 条回答
写回答
取消 提交回答
  • 之前canal.mq.partition和canal.mq.partitionsNum会互斥,而且以canal.mq.partition配置为优先,1.1.3最新版本做了调整,以canal.mq.partitionNum做优先,升级最新版本测试吧

    原回答者GitHub用户agapple

    2023-05-09 17:42:43
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    Canal的canal.mq.partitionHash参数用于控制消息分发到Kafka的分区。如果您将该参数设置为canal.instance.mysql.slaveId,则Canal会将消息发送到对应的分区。如果您将该参数设置为其他的值,则Canal会根据该值的Hash值来选择分区。

    在您的情况下,由于canal.mq.partitionHash参数没有起作用,可能是由于您的配置有误或者版本问题导致的。建议您检查以下几个方面:

    确认canal.mq.partitionHash参数的值是否被正确设置。可以通过Canal的日志文件来查看该参数的值是否被正确解析。

    确认canal.mq.partitionsNum参数的值是否与Kafka的分区数相匹配。如果Kafka的分区数少于canal.mq.partitionsNum参数的值,则无法将消息发送到所有分区。可以通过Kafka的日志文件来查看分区数是否正确。

    确认Canal是否能够正常连接到Kafka,并且能够发送消息到Kafka。可以检查Canal的日志文件以查看是否存在异常信息。

    检查Canal的版本是否支持canal.mq.partitionHash参数。在Canal的官方文档中,该参数仅适用于Canal 1.1.4及以上版本。如果您使用的是低于该版本的Canal,可能会导致该参数不起作用。

    如果以上检查都没有发现问题,建议您尝试更新到较新的版本,并重新配置canal.mq.partitionHash参数。

    2023-05-08 13:40:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RocketMQ Client-GO 介绍 立即下载
RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载