cannal+rocketMQ报错解决The specified topic is blank

1,596 阅读1分钟
排查
  • 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=.*\\..*