赞
踩
RocketMq的日志默认位置:
cd ~/logs/rocketmqlogs
说明正常启动了NameServer
说明正常启动了NameServer
说明broker已经注册到了NameServer
在windows环境下运行下面命令
telnet ip 9876
telnet ip 10911
其中9876是NameServer默认端口,10911是broker的端口
第一种情况是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
第二种情况出现的概率较低,可以采用以下两种方式确认
查看日志命令 cat ~/logs/rocketmqlogs/broker.log | grep register
sh mqadmin clusterList -n localhost:9876
出现如下内容说明连接成功,没有问题
我在通过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注册信息
再次运行程序,已经可以正常生产和消费信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。