RocketMQ踩坑之部署

357 阅读3分钟

作为一个刚学习rocketMQ的小白,自然会去打开官网,学习里面的文档,部署rocketMQ,自然是第一步了。

官网建议使用Linux/Unix/Mac系统部署,咱也不怕,不是有虚拟机吗?或者使用云服务器。废话不多说,直接开始我们正式的工作。

1. 从发行版下载和构建(我下载的是4.6.0版本)这里基本和官方文档差不多,只是里面的文件夹结构有点不一样,具体原因还不清楚是什么,有了解的同学吗,麻烦解释解释?

1> unzip rocketmq-all-4.6.0-source-release.zip
2> cd rocketmq-all-4.6.0/
3> mvn -Prelease-all -DskipTests clean install -U
4>cd distribution/target/apache-rocketmq // 1官网路径
4>cd distribution/target/rocketmq-4.6.0/rocketmq-4.6.0/  //2 我的路径

2. 修改部分参数,这一点务必注意,rocketMQ对服务器的储存要求很高,部分同学在用虚拟机或云服务器启动的时候会因为内存不足而失败。在bin目录下(基于上一步的路径),修改runserver.sh和runbroker.sh里的参数如下(这个大小根据你们的情况自己调整)

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn500m"

3. 启动Name Server和Broker,基本和文档一样,下面是启动命令,我重定向了输出

nohup sh bin/mqnamesrv >/dev/null 2>&1 &
nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 &
//查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log
tail -f ~/logs/rocketmqlogs/broker.log 

4. 发送和接收消息,按照官网步骤进行,ok,但故事还没有结束,请往下看

> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK, msgId= ...

> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...

5. 测试关闭服务器,在bin目录下通过jps命令可以查看namesrv和broker是否成功开启,关闭成功会出现下面的提示

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

6. 服务器上部署完成后,本地运行Producer,可以参照官网下节的demo,这里就不贴出来了,当然要记得添加必要的依赖rocketmq-client和fastjson...

No route info of this topic, TopicTest

7.猜到你很可能遇到了上面的错误,但是按照步骤1-4,运行org.apache.rocketmq.example.quickstart.Producer也没有出现错误,那问题出在哪呢?首先应该想到的是防火墙,那么我们开启9876端口吧(我用的是centos7,不同系统处理方式不一样)

firewall-cmd --zone=public --add-port=9876/tcp --permanent
systemctl restart firewalld.service  

8.再次运行Producer,出现下面错误,但10909是什么?查询资料得知vip通道端口,默认是开启的(也可以通过代码关闭),因此我们需要再开放一个端口10909

![]([图片]

)

**9.依旧出现8的错误,通过网上资料发现,通过下面方法解决

// conf/broker.conf文件下添加两行
brokerIP1=外网IP
namesrvAddr=外网IP(内网IP):9876
//重新启动broker,命令有所改变
nohup sh bin/mqbroker -c conf/broker.conf >/dev/null 2>&1 &

10.终于成功了,我们再启动Consumer,等待了半天,还是没有接收到消息,查询得知是 10911端口(非VIP端口)没有开启,我们开启端口后Consumer也获得了消息,部署基本完成