最近項目升級中間件,把原來自建的開源rocketMQ升級到阿里云的商業(yè)rocketMQ,其中涉及到canal同步mysql,通過rocketMQ發(fā)送消息的問題。
在把配置替換為阿里云rocketMQ相關(guān)信息以后,無法正常發(fā)送消息,具體報錯如下:
CANAL日志:
2020-04-23 08:02:52.785 [pool-6-thread-1] ERROR com.alibaba.otter.canal.rocketmq.CanalRocketMQProducer - send flat message to fixed partition error org.apache.rocketmq.client.exception.MQClientException: No route info for this topic, CANAL_SYNC For more information, please visit the url, http://rocketmq.apache.org/docs/faq/ at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendSelectImpl(DefaultMQProducerImpl.java:936) ~[rocketmq-client-4.3.0.jar:na] at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:907) ~[rocketmq-client-4.3.0.jar:na] at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:902) ~[rocketmq-client-4.3.0.jar:na] at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:393) ~[rocketmq-client-4.3.0.jar:na] at com.alibaba.otter.canal.rocketmq.CanalRocketMQProducer.send(CanalRocketMQProducer.java:197) [canal.server-1.1.3.jar:na] at com.alibaba.otter.canal.rocketmq.CanalRocketMQProducer.send(CanalRocketMQProducer.java:75) [canal.server-1.1.3.jar:na] at com.alibaba.otter.canal.server.CanalMQStarter.worker(CanalMQStarter.java:182) [canal.server-1.1.3.jar:na] at com.alibaba.otter.canal.server.CanalMQStarter.access$500(CanalMQStarter.java:22) [canal.server-1.1.3.jar:na] at com.alibaba.otter.canal.server.CanalMQStarter$CanalMQRunnable.run(CanalMQStarter.java:224) [canal.server-1.1.3.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
MQ日志:
2020-04-23 08:08:51,051 WARN RocketmqClient - get Topic [CANAL_SYNC] RouteInfoFromNameServer is not exist value 2020-04-23 08:08:51,051 WARN RocketmqClient - updateTopicRouteInfoFromNameServer Exception org.apache.rocketmq.client.exception.MQClientException: CODE: 17 DESC: No topic route info in name server for the topic: CANAL_SYNC See http://rocketmq.apache.org/docs/faq/ for further details. at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:1233) at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:1203) at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:613) at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:500) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.tryToFindTopicPublishInfo(DefaultMQProducerImpl.java:577) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendSelectImpl(DefaultMQProducerImpl.java:920) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:907) at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:902) at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:393) at com.alibaba.otter.canal.rocketmq.CanalRocketMQProducer.send(CanalRocketMQProducer.java:197) at com.alibaba.otter.canal.rocketmq.CanalRocketMQProducer.send(CanalRocketMQProducer.java:75) at com.alibaba.otter.canal.server.CanalMQStarter.worker(CanalMQStarter.java:182) at com.alibaba.otter.canal.server.CanalMQStarter.access$500(CanalMQStarter.java:22) at com.alibaba.otter.canal.server.CanalMQStarter$CanalMQRunnable.run(CanalMQStarter.java:224) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
一開始認(rèn)為配置信息有問題,反復(fù)核對了accessKey、secretKey、producerGroup、namespace、topic、servers。確認(rèn)無誤以后,懷疑是canal不兼容現(xiàn)在的阿里云rocketMQ,咨詢阿里云售后也是一些官方回復(fù)。
無意間發(fā)現(xiàn)canal有了新版本,抱著試試的態(tài)度,把原來的1.1.3升級到最新穩(wěn)定版1.1.4版以后,測試正常。配置文件中還需要注意,把servers中的http://去掉,不然也無法連接到阿里云的rocketMQ。
贊
1
賞