一篇文章彻底解决RocketMq的疑难杂症之:org.apache.rocketmq.client.exception.MQClientException: No route info of thi

解决
一共有四个原因:
1 brocker买有连接到mqnameserv
2 producer没有连接到mqnameserv
3 topic没有创建
4 防火墙

说明:
rocktMq中nameserv相当于一个zookeeper,充当一个注册的角色,所以brocker和我们的代码producer是通过nameserv来进行同行的。
brocker的启动命令中 -n xxxx:9876 就是指定 mqnameserv ,producer的代码中 也是 producer.setNamesrvAddr(“xxxx:9876”); ,这里都是指定的mqnameserv。

3 问题 在brocker的启动命令中加入autoCreateTopicEnable=true 就可以了

sh mqbroker -n 10.0.1.1:9876 autoCreateTopicEnable=true
1
4 问题 关闭防火墙就可以了 service iptables stop

1 2 问题

可以自己先到DefaultMQProducerImpl这个类中查看源码,可以看到No route info of this topic是在connect to <> failed 错误的下面的,所以可以自己看源码,一个一个解决。

有人说autoCreateTopicEnable=true 是不行的 https://blog.csdn.net/guiliguiwang/article/details/79852556 ,所以想到了手动创建topic https://www.jianshu.com/p/345aaa18f71d (不是真正的原因)

有人说禁用网卡https://linux.cn/article-10844-1.html?pr (不管用)

有人说关闭vip通道https://www.cnblogs.com/zhjh256/p/6944431.html (不行,我的rockemq版本不支持这个方法)

有人说 https://my.oschina.net/u/3476125/blog/897429 (终于成功了)

方法就是修改brocker.conf 配置文件中的内容 brockerIP1,当然这个方法,很多博客中有提到,但是对我没有用。。。

在这里插入图片描述
总结
因为配置了docker虚拟ip导致,brocker总是代理到docker的虚拟ip上

rocketmq选取ip的思路是,遍历本地的所有网卡ip,过滤掉“127.0” 和“192.168”开头的ip地址,然后得到第一个ip,为本机ip。所以总是代理到docker的ip上了。

在broker.conf配置文件中添加配置 brokerIP1=需要指定的ip

在这里插入图片描述


public class TopicDemo {

	public static void main(String[] args) throws Exception {
		DefaultMQProducer defaultMQProducer = new DefaultMQProducer("HAOKE_IM");

		defaultMQProducer.setNamesrvAddr("127.0.0.1:9876");

		defaultMQProducer.start();

		/**
		 * key:broker名称 ,newTopic:topic名称, queueNum:队列数(分区)
		 */
		defaultMQProducer.createTopic("broker_haoke_im", "my_topic", 8);

		System.out.println("创建topic成功");

		defaultMQProducer.shutdown();
	}
}

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这种情况可能是由于对数据库进行查询时,方法内部缺少相应的参数占位符导致的。在持久层(Dao层)的方法中,应该使用@Param注解为每个参数添加占位符,以确保参数能够正确传递。例如,在Lmonkey_CartDao接口中的update方法中,参数quantity应该使用@Param("quantity")进行标注,u_id应该使用@Param("u_id")标注,p_id应该使用@Param("p_id")进行标注。这样就能避免出现"Parameter 'email' not found"的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Cause: org.apache.ibatis.binding.BindingException: Parameter ‘xx‘ not found.](https://blog.csdn.net/qq_54141095/article/details/124199713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [数据库疑难杂症 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the ...](https://download.csdn.net/download/weixin_38717896/13685038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值