排查
- rocketmq是否正常启动(正常)
- rocketmq是否自动创建topic(用start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true启动解决)
- 检查rocketmq服务器端口防火墙是否拦截
- github上issues找类似问题
报错信息
java.lang.RuntimeException: org.apache.rocketmq.client.exception.MQClientException: The specified topic is blank
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/
at com.alibaba.otter.canal.connector.rocketmq.producer.CanalRocketMQProducer.sendMessage(CanalRocketMQProducer.java:303) ~[na:na]
at com.alibaba.otter.canal.connector.rocketmq.producer.CanalRocketMQProducer.sendMessage(CanalRocketMQProducer.java:317) ~[na:na]
at com.alibaba.otter.canal.connector.rocketmq.producer.CanalRocketMQProducer.send(CanalRocketMQProducer.java:284) ~[na:na]
at com.alibaba.otter.canal.connector.rocketmq.producer.CanalRocketMQProducer.send(CanalRocketMQProducer.java:170) ~[na:na]
at com.alibaba.otter.canal.server.CanalMQStarter.worker(CanalMQStarter.java:181) [canal.server-1.1.6.jar:na]
at com.alibaba.otter.canal.server.CanalMQStarter.access$100(CanalMQStarter.java:24) [canal.server-1.1.6.jar:na]
at com.alibaba.otter.canal.server.CanalMQStarter$CanalMQRunnable.run(CanalMQStarter.java:223) [canal.server-1.1.6.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_211]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_211]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_211]
Caused by: org.apache.rocketmq.client.exception.MQClientException: The specified topic is blank
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/
at org.apache.rocketmq.client.Validators.checkTopic(Validators.java:107) ~[na:na]
at org.apache.rocketmq.client.Validators.checkMessage(Validators.java:87) ~[na:na]
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendSelectImpl(DefaultMQProducerImpl.java:1104) ~[na:na]
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1092) ~[na:na]
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1087) ~[na:na]
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:508) ~[na:na]
at com.alibaba.otter.canal.connector.rocketmq.producer.CanalRocketMQProducer.sendMessage(CanalRocketMQProducer.java:291) ~[na:na]
... 9 common frames omitted
解决方法
配置有问题,topic使用了动态topic,未设置默认topic会导致上面的问题
- canal.mq.topic=example
出现问题的配置
# mq config
# 指定mq队列 “问题配置”
#canal.mq.topic=example
canal.mq.dynamicTopic=.*\\..*
解决完的配置
# mq config
canal.mq.topic=example
canal.mq.dynamicTopic=.*\\..*