本文基于腾讯云新加坡 2H4G 服务器。连接服务器的软件用的是 termius。
⚠️警告 Warning:
由于克隆仓库最新的源码编译安装 RocketMQ
,可能有潜在的Bug或风险,建议不要在生产环境这么做。我只是用来学习,所以即使有潜在的 Bug 我也没什么损失😎
编译安装 RocketMQ
克隆 RocketMQ
Github 仓库 github.com/apache/rock…
git clone https://github.com/apache/rocketmq.git
安装 Java 环境
sudo apt update
sudo apt install openjdk-11-jdk
安装完成后,配置 Java 环境变量。
nano ~/.bashrc
按 ALT + /
跳转到最后,在最后几行添加
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
按 Ctrl + X
,然后输入 y
,再按回车
保存退出。
接着更新一下环境变量
source ~/.bashrc
安装 Maven
sudo apt install maven
进入刚刚 clone 下来的 rocketmq
目录,并用 maven 编译。关于 build 命令的更多问题可以看 官方GitHub仓库Build说明
cd rocketmq/
mvn -Prelease-all -DskipTests clean install -U
接下来就是等待编译完成,当看到像下图一样的时候就是编译成功了。
在 ~/rocketmq/distribution/target/rocketmq-5.0.1-SNAPSHOT/rocketmq-5.0.1-SNAPSHOT/
目录下可以看到编译结果。将这个文件夹复制到用户根目录下,并重命名为rocketmq-5.0.1。
cd ~
cp -r ~/rocketmq/distribution/target/rocketmq-5.0.1-SNAPSHOT/rocketmq-5.0.1-SNAPSHOT ~/rocketmq-5.0.1
接下来将这个 rocketmq-5.0.1 文件夹添加到环境变量
nano ~/.bashrc
按 ALT + /
,在最后几行加入
export ROCKETMQ_HOME=~/rocketmq-5.0.1
export PATH=$PATH:$ROCKETMQ_HOME/bin
Ctrl + X
,按y
,然后回车
保存。
然后更新一下环境变量
source ~/.bashrc
验证刚刚配置的环境变量是否生效
echo $ROCKETMQ_HOME
像下图这样就是生效了。
启动 NameServer
建立一个新的 screen
使 mqnamesrv 后台运行,命名为 mqname
screen -S mqname
在新的 screen 中 cd 进入刚刚复制过来的 rocketmq-5.0.1 文件夹中的 bin 目录
cd rocketmq-5.0.1/bin/
启动 Name Server 服务
sh mqnamesrv
出现以下报错
原因是 mqnamesrv 默认配置的 jvm 虚拟机内存比较大,我这台 4G 内存的服务器就不能直接运行。接下来
nano runserver.sh
找到下图这两个地方,将它们改成 512m
改完后 Ctrl + X
,按y
,然后回车
保存
改完之后是下图这样的
再次启动 Name Server 服务
sh mqnamesrv
如下图所示, Name Server 成功启动
按 Ctrl + A + D
退出 mqname
这个 screen
。
通过下面命令查看 NameServer 运行状态(Tip:jps 是 jdk 提供的一个查看当前 java 进程的小工具)
jps -l
启动 Broker
同样的,建立一个新的 screen
使 mqbroker 后台运行,命名为 mqbroker
screen -S mqbroker
然后
cd ~/rocketmq-5.0.1/bin/
sh mqbroker -n localhost:9876
出现以下报错,原因同样是默认配置的 jvm 虚拟机内存比较大:
输入命令
nano runbroker.sh
找到下图这个地方,将它改成 512m
,改完后Ctrl + X
,按y
,然后回车
保存。
更改后应该像下图这样:
再次启动Broker
sh mqbroker -n localhost:9876
从下图可以看到 Broker 成功启动。
最后,按 Ctrl + A + D
退出这个 screen
。
额外提一嘴:可以用 screen -list
命令查看刚才创建的两个 screen
,像下图这样:
要想返回某个 screen
可以用 screen -r 你起的名称
命令,比如我想返回 mqname
这个 screen
,可以 screen -r mqname
。
如果你不习惯用 screen
,用 nohup
也是可以的,就是在启动 NameServer
和 Broker
的命令分别换成 nohup sh mqnamesrv &
和 nohup sh mqbroker -n localhost:9876 &
此外,还可以用下面的命令查看日志
tail -f ~/logs/rocketmqlogs/broker.log
模拟发送消息和消费消息验证功能是否正常
再次通过下面命令查看 NameServer 和 Broker 运行状态
jps -l
目前我们 NameServer 和 Broker 都已经启动成功,应该可以进行发送和消费消息了。RocketMQ 默认提供了一个模拟发送消息和消费消息的测试类,我们来验证一下。
cd rocketmq-5.0.1/bin/
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
又出现报错了
这时候需要我们设置一个临时环境变量(或者直接加到 ~/.bashrc 文件后面)
按 Ctrl + C
终止脚本,然后执行下面的命令
export NAMESRV_ADDR=localhost:9876
然后再次启动 Producer
(生产者)
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
看到下图这样就是说明消息投递成功。
接下来就是启动 Consumer
(消费者)
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
像下图这样就是消费成功了。
加餐:安装Dashboard
Dashboard 是由 RocketMQ 官方提供的组件,它能够给我们的集群提供一个可视化的界面,来帮我们更好的运维、监控整个集群。
rocket-dashboard
的前身是在 rocketmq-externals 里的 rocketmq-console,现在,rocketmq-console 这个项目已经被重命名、并且挪到了新的仓库中去了。
分别执行以下几行命令
git clone https://github.com/apache/rocketmq-dashboard.git
cd rocketmq-dashboard/
mvn clean package -Dmaven.test.skip=true
然后等待编译完成,像下图这样:
然后新建一个 screen
,命名为 dashboard
screen -S dashboard
然后执行以下命令。如果运行不了,检查一下当前是不是在 ~/rocketmq-dashboard
目录下
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
出现下图这样的 Spring
标志说明启动成功。
默认端口是 8080
,去腾讯云服务器控制台中的 防火墙
将端口 8080
添加进规则,然后在浏览器输入 你的公网IP:8080
访问 Dashboard
(Tip:英语不好的小伙伴不用怕,右上角可以更换成中文)
最终看到下图这样就安装成功啦!
点进 集群
,可以看到刚刚测试的 1000 条消息。
给 Dashboard 添加登录验证
cd ~/rocketmq-dashboard/
nano src/main/resources/application.yml
找到下图中的 loginRequired
,将 false
改成 true
。
然后添加管理员
格式:每行定义一个用户,username=password[,N]
N 是可选项,可以为 0(普通用户); 1(管理员)
修改完后保存退出。然后重新编译。
mvn clean package -Dmaven.test.skip=true
再启动
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
这时候就需要账号密码才能进仪表盘了。
都看到这里了,点个赞再走呗。