1. 检查MQ是否正常启动

RocketMq的日志默认位置:

cd  ~/logs/rocketmqlogs

在这里插入图片描述
在这里插入图片描述
说明正常启动了NameServer
在这里插入图片描述
说明正常启动了NameServer在这里插入图片描述
说明broker已经注册到了NameServer

2. 检查端口是否可以正常访问

在windows环境下运行下面命令

telnet  ip 9876
telnet  ip 10911

其中9876是NameServer默认端口,10911是broker的端口

3 检查topic是否存在

第一种情况是topic确实不存在,可以查看broker的日志确定topic是否真的存在。
登录MQ所在的服务器,执行如下命令(把recommend换成你的topic名称)

cat ~/logs/rocketmqlogs/broker.log  | grep topicName=recommend

出现如下内容说明topic已经存在

如果没有出现以上内容,说明topic确实不存在。可以通过自动创建topic或手动创建topic解决

自动创建topic:启动broker时加上自动创建topic的参数,如下,其中autoCreateTopicEnable=true表示自动创建topic

nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true > ../broker.log &

手动创建topic:进入mq的安装目录 ,执行如下命令创建topic。

mq安装的相对目录是
rocketmq-all-4.4.0/distribution/target/apache-rocketmq/bin

以下命令创建了一个名称是orderPay的topic

sh mqadmin updateTopic -b localhost:10911 -t orderPay

第二种情况出现的概率较低,可以采用以下两种方式确认

  1. 查看broker的日志,出现如下内容,说明连接成功。

查看日志命令 cat ~/logs/rocketmqlogs/broker.log | grep register

  1. 在mq的安装目录执行如下命令
sh mqadmin clusterList -n localhost:9876

出现如下内容说明连接成功,没有问题

在这里插入图片描述

4. Broker的IP地址错误,造成网络不通

我在通过nohup sh bin/mqbroker -n localhost:9876 &命令启动mqbroker 的时候,显示注册成功,当时并没有注意这个IP地址,随后在通过程序测试时一直显示消息发送失败,随后我通过Debug异常信息,在下面这一段代码时我发现了问题,这里的addr变量,就是mqbroker 的地址,本来我的Broker是192.168网段的,但是addr显示的却是172网段,导致二者之间网络不通无法发送消息,随后我通过下面命令查看了mqbroker 的注册信息
在这里插入图片描述

sh mqadmin clusterList -n localhost:9876

通过该命令我发现broker的地址确实有误,broker和NAMESRV是放在一台机器上的,但是服务器是虚拟构建出来的,至于为什么会显示172网段还不清楚,但是至少问题找到了,现在就需要指定broker配置时的IP设置
在这里插入图片描述
这里我们就需要修改RocketMQ的 broker 的地址,注意这里首先关闭broker
进入到broker 安装目录,红色部分就是配置文件
在这里插入图片描述

# 配置IP地址
echo "brokerIP1=192.168.208.32" > broker.properties

# 首先停止MQ服务
./bin/mqshutdown broker
./bin/mqshutdown namesrv
#启动 mqnamesrv 
nohup sh bin/mqnamesrv &
#重点:mrbroker 启动时通过 -c 加载配置文件
nohup sh bin/mqbroker -n 127.0.0.1:9876 -c /home/rocketmq/rocketmq-rocketmq-all-4.6.0/distribution/target/rocketmq-4.6.0/rocketmq-4.6.0/broker.properties &

重新启动后,再次查看Broker注册信息

在这里插入图片描述
再次运行程序,已经可以正常生产和消费信息

Logo

一站式 AI 云服务平台

更多推荐