一、准备
RocketMQ有硬件要求,系统必须是64位的,JDK需要在1.8或者1.8以上的。
可以选择先下载好RocketMQ的安装包再上传到CentOS 7,也可以直接使用wget命令下载
下载地址:https://archive.apache.org/dist/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip
这里我选择先下载4.8版本的RocketMQ再上传
因为下载到的文件是以zip结尾的,所以需要现在系统中安装解压zip压缩包的方法
# yum install -y unzip
开始解压
unzip rocketmq-all-4.8.0-bin-release.zip
二、启动RocketMQ及测试
可以参考官方文档,因为RocketMQ是阿里创建的,所以帮助文档相对容易理解
https://rocketmq.apache.org/docs/quickStart/02quickstart/
1.修改初始的内存
修改runserver.sh和runbroker.sh
vim bin/runserver.sh
将原有的 -Xms4g 修改成 -Xms1g或者-Xms256m,这里的内存大小要根据自己创建虚拟机时设置的内存大小来修改,如果自己虚拟机内存大就可以修改的大一点,内存小就修改的小一点。因为这个内存大小有时候会影响到RocketMQ能否正常启动
vim bin/runbroker.sh
修改的大小依旧和runserver.sh一致
2.启动RocketMQ
2.1启动NameSrv
#后台启动NameSrv
nohup sh bin/mqnamesrv & #最后的&表示为后台启动
查看NameSrv的日志,在安装时可以不需要查看日志,直接查看进程是否启动
tail -f ~/logs/rocketmqlogs/namesrv.log
查看进程
jps
这里可以看到NameSrv已经启动,下面启动Broker
2.2启动Broker
#后台启动Broker
nohup sh bin/mqbroker -n localhost:9876 &
查看broker的日志
tail -f ~/logs/rocketmqlogs/namesrv.log
再次查看进程
可以看到broker和namesrv都已经启动了
2.3进行发送和接收消息测试
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...
图示为,相当于消费者在接受消息
2.4关闭服务(要在进行完可视化操作后再关闭)
要关闭的时候,要先关闭消费者再关闭生产者喔
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv
三、控制台的安装与启动
RocketMQ的可视化dashboard,可以更加直观的看到数据
1.下载以及修改配置
1.1下载
因为CentOS 7 是精简版的Linux,所以就不在Linux上安装dashboard
下载地址:https://github.com/apache/rocketmq-dashboard
注意:在windows系统上安装dashboard时要注意安装路径,不要安装在中文路径下,避免不必要的问题出现
1.2修改配置
修改下载好的dashboard中的src/main/resources中的application.yml配置文件
修改端口号8080(防止与Tomcat的默认端口号8080冲突)以及namesrvAddrs地址(修改成RocketMQ所在的虚拟机的地址)
要注意的一点就是,此文件为yml文件,所以文件中的空格不准使用tab
1.3添加所需要的依赖
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
2.打包以及启动
2.1打包
运行maven的打包命令
mvn clean package -Dmaven.test.skip=true
2.2打包时可能出现的问题
maven [INFO] No proxies configured [INFO] No proxy was configured, downloading directly
在执行打包文件之后,一直出现这样的错误,经过查找后发现,是少了yarn-v1.22.10
在每次执行打包操作时,都会在本地maven仓库中生成一个
但是又偏偏不会生成yarn-v1.22.10,所以需要我自己去下载这个文件,然后再放在和yarn-1.22.10.tar.gz同一级目录下
此处为yarn-v1.22.10.tar.gz的下载地址
https://github.com/yarnpkg/yarn/releases/download/v1.22.10/yarn-v1.22.10.tar.gz
下载好后,对其解压,并放在仓库中
然后再重新打包就成功了!!!
2.3启动可视化dashboard
打包结束后就会在target中生成一个jar包
在cmd中继续执行
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
启动成功
去浏览器访问http://localhost:7777
即可在这里看到我们在RocketMQ产生的消息
2.4启动可视化dashboard时遇到的问题
第一种问题:Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to [10.70.20.xxx:9876] failed
第一种情况:问题原因:没有开放9876的端口
解决办法:开放9876端口或者关闭防火墙(关闭防火墙只能在学习或者开发时使用喔)
#开放指定端口
firewall-cmd --zone=public --add-port=9876/tcp --permanent
#关闭指定端口
firewall-cmd --zone=public --remove-port=9876/tcp --permanent
第二种情况:如果开放端口之后还出现这个错误
解决办法:需要修改RocketMQ中的conf文件夹中的border.conf文件
在文件最后添加
brokerIP1 = 要执行可视化操作的地址(公网ip)
namesrvAddr = 127.0.0.1:9876
修改完成之后,要记得先杀死之前的进程,再重新启动
第二种问题:rocketmq org.apache.rocketmq.remoting.exception.RemotingConnectException:connect to <10909> failed
问题原因:跨域问题
解决方法:同第一种方法的第二种情况,记得也是要杀死进程再重新启动