开发者社区> 问答> 正文

Canal对接RocketMQ时,修改将表名作为Message的topic,没有自动创建对应的Top

环境信息

canal version 1.1.3 mysql version 5.7.20

问题描述

将canal CanalRocketMQProducer 代码修改将表名作为Message的topic

Message message = new Message(flatMessage.getTable(), JSON.toJSONString(flatMessage, SerializerFeature.WriteMapNullValue).getBytes());

启动后 Canal一直报错提示:

org.apache.rocketmq.client.exception.MQClientException: No route info for this topic,

期待结果

自动根据表名创建Topic

现执行情况

没有创建表名对应的Topic

原提问者GitHub用户flackyang

展开
收起
古拉古拉 2023-05-08 15:15:51 98 0
2 条回答
写回答
取消 提交回答
  • 现在已支持动态topic,可以针对表级建topic

    原回答者GitHub用户rewerma

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

    默认情况下,RocketMQ是不会自动创建Topic的。您需要在启动RocketMQ时设置autoCreateTopicEnable参数为true,以便允许RocketMQ自动创建Topic。您可以在RocketMQ的broker配置文件(broker.conf)或者启动命令中添加以下配置:

    autoCreateTopicEnable=true 这样,在Canal发送消息时,如果消息的Topic不存在,RocketMQ会自动创建相应的Topic。具体而言,当Canal发送消息时,如果消息的Topic不存在,Canal会调用RocketMQ的admin API来创建Topic。同时,在Canal配置文件(instance.properties)中添加以下配置,以便Canal正确地发送消息:

    canal.mq.topic=your_topic_name 其中,your_topic_name应该替换为您想要使用的Topic名称。

    2023-05-08 15:59:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
行业实践:RocketMQ 业务集成典型行业应用和实践 立即下载
技术揭秘:RocketMQ 5.0 云原生架构升级之路 立即下载
RocketMQ Summit 2022 开源生态发展 立即下载