已解决org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to n

前言

RocketMQ集群是配置好了,但是在运行某个虚拟机上bin目录下的mqadmin命令时,某台虚拟机出现了如标题所示的错误。针对这个问题,写这篇文章记录下,以帮助到遇到这个问题的小伙伴儿们。

错误分析

报的错误为下面这个,报错全部代码:

xml 复制代码
[root@localhost bin]# mqadmin topicList
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
org.apache.rocketmq.tools.command.SubCommandException: TopicListSubCommand command failed
        at org.apache.rocketmq.tools.command.topic.TopicListSubCommand.execute(TopicListSubCommand.java:113)
        at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:139)
        at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:90)
Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
        at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:394)
        at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicListFromNameServer(MQClientAPIImpl.java:1390)
        at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.fetchAllTopicList(DefaultMQAdminExtImpl.java:253)
        at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.fetchAllTopicList(DefaultMQAdminExt.java:218)
        at org.apache.rocketmq.tools.command.topic.TopicListSubCommand.execute(TopicListSubCommand.java:107)
        ... 2 more

估计看了这个错误都会明白什么意思,RocketMQ远程连接错误,链接为空问题导致的失败。但是集群已经配置好了,这个时候运行这个IP下的mqadmin clusterList命令,也无法列出所在的所有集群。

这个时候我尝试了一下看看虚拟机的IP能否ping得通,发现确实也没问题:

难道是因为防火墙?我在每个虚拟坤下都执行了systemctl status firewalld命令,发现每个虚拟坤下的防火墙也都是关闭状态,那就一定不是这个方面的原因了。

问题解决

后来查阅了很多资料,以及自己做了很多尝试才发现,这个错误 org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed 表示 Apache RocketMQ 客户端在尝试连接到某个服务(比如 NameServer)时,目标地址是 null,因此无法建立连接。那么是什么原因导致的呢?

xml 复制代码
配置问题:客户端的 NameServer 地址可能没有正确配置。

如果你和我一样是在代码中配置,可能是代码中的配置逻辑有误,导致没有正确设置 NameServer 地址。 如果你是在配置文件(比如 broker.conf 或者客户端的配置文件)中设置,可能是文件被错误地修改或者未正确加载。

这个时候已经检查了好多次配置文件,发现配置文件没问题,难道是?

忘记了还有个系统文件,我查看136虚拟机下的配置文件vim /etc/profile

发现确实其他的虚拟机都配置了nameserver的地址,唯有这个虚拟坤的没有配置,于是我给他填上了: 配置完成后一定不要忘记执行source /etc/profile命令使得配置生效哦!!!

如果这个方法解决不了你的难题,你也可以查看 RocketMQ 客户端和 NameServer 的日志文件,可能会有更详细的错误信息或警告,这有助于你解决bug。

本篇文章到这里就结束了,后续会继续分享RocketMQ相关的知识,感谢各位小伙伴们的支持!

相关推荐
卷无止境1 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
狼爷2 小时前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
郑州光合科技余经理2 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源2 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源2 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6662 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
周杰伦fans3 小时前
8GB显存下模型量化实战指南
人工智能·后端·c#
小蒜学长3 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统
IT_陈寒4 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
打工仔折腾 AI5 小时前
把AI Agent托管在家用电脑:UU远程终端与端口映射实测记录
人工智能·后端·python·langchain·ai agent 实战