最近把rocketmq源码down到本地后

源码调试报错 No route info of this topic

直接用main方法启动了nameserver和broker

com.alibaba.rocketmq.namesrv.NamesrvStartup
com.alibaba.rocketmq.broker.BrokerStartup

进入bin目录下用mqadmin.exe创建了一个topic并且成功了

源码调试报错 No route info of this topic

然后写了一个简单的producer

package com.alibaba.rocketmq.client;

import com.alibaba.rocketmq.client.producer.DefaultMQProducer;
import com.alibaba.rocketmq.client.producer.SendResult;
import com.alibaba.rocketmq.common.message.Message;

public class Producer {

	public static void main(String[] args) throws Exception{
		DefaultMQProducer producer = new DefaultMQProducer("groupa");
		producer.setNamesrvAddr("localhost:9876");
		producer.start();
		
		Message msg = new Message("mytopic", ("Hello RocketMQ ").getBytes());
		msg.setKeys("mykey");
		msg.setTags("mytag");
        SendResult sendResult = producer.send(msg);
        System.out.println(sendResult);
        
        producer.shutdown();
	}
}

但是始终报错:

源码调试报错 No route info of this topic

 

最后查了很多资料,也跟了源码(网上很多说是设置 autoCreateTopic,其实是错的,因为broker默认就是true)

最终发现是broker启动的方式有问题,启动的时候必须指明nameserver的地址

com.alibaba.rocketmq.broker.BrokerStartup.createBrokerController(String[])

稍微加了一句代码后ok了

源码调试报错 No route info of this topic

或者是设置一个 NAMESRV_ADDR 的环境变量,因为broker启动的时候会去获取这个环境变量

 

结果:

源码调试报错 No route info of this topic

 

相关文章:

  • 2022-12-23
  • 2021-12-20
  • 2021-12-05
  • 2021-08-14
  • 2021-05-16
  • 2021-08-18
  • 2021-06-19
猜你喜欢
  • 2022-12-23
  • 2021-04-22
  • 2022-12-23
  • 2021-04-07
  • 2021-09-11
  • 2021-09-05
  • 2022-03-04
相关资源
相似解决方案