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

本文基于 v3.2.6版本代码分析

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

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

进入bin目录下用mqadmin.exe创建了一个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();
	}
}

但是始终报错:

 

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

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

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

稍微加了一句代码后ok了

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

 

结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值