已解决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相关的知识,感谢各位小伙伴们的支持!

相关推荐
qq_185198697 分钟前
SpringBoot-五-AOT
java·spring boot·后端
用户29975997127079 分钟前
Service 层到底该 throw 异常还是 return 错误码?我在两个团队各推行过一种,最后被一个事务 Bug 说服了
后端
小月土星19 分钟前
吞噬星空 RAG 项目 MySQL 实战:从硬编码登录到数据库鉴权(Day 1)
后端
Heo19 分钟前
怎么保证缓存和数据库一致性?
前端·后端·面试
延凡科技1 小时前
从 “人管机器“ 到 “数据管人“:智慧矿山综合管控落地实践
java·后端·struts
ServBay1 小时前
2026 年值得关注的 8 款 AI 智能体工具
后端·aigc·ai编程
QX_hao1 小时前
【Go】--Cobra-cli的用法
开发语言·后端·golang
大厂码农老A1 小时前
177K star,扒开DeepSeek Harness的营销,我看到了什么
人工智能·后端·deepseek
别看我只是一直狼1 小时前
补充:证书自动续约检查、故障诊断与重新签发
后端
Lear1 小时前
Java 实现多步骤异步任务编排
后端