跟我学RocketMQ[1-2]之安装RocketMQ-Console管理平台
上文中我们初步了解了RocketMQ的基础结构,并在linux环境下部署了单节点模式的消息服务。
官方提供了命令行模式下的管理工具,脚本路径位于:
[安装路径]/bin/mqadmin
支持对topic、订阅组、broker等的统计及管理。
对于开发者,我们更愿意使用图形化的可视界面来进行管理,这种方式对于运维也是极为友好的。官方早已给我们考虑到了,在github的rocketmq-externals项目中,有一个名为rocketmq-console的子项目,就是图形化界面的RocketMQ管控台。
由于当前版本官方没有提供打包好的二进制文件,因此需要我们自行下载源码编译打包。
源码下载
这里需要特别注意的是,尽量不要在master分支的最新版代码下进行编译,会发生很多奇怪的打包错误,诸如:找不到符号之类的问题层出不穷,应该是最新版还不稳定的原因。我们需要手动指定到 Release rocketmq-console 1.0.0 version 这个分支,如下图所示:
我们直接点击 Download ZIP 下载代码压缩包即可,这个是最简单的方式。
编译打包
将下载好的源码解压到某个路径,cd到源码的根路径下,我的路径为
D:\rocketmq\rocketmq-externals-release-rocketmq-console-1.0.0\rocketmq-console
在该路径下执行打包命令,注意,一定要添加跳过单元测试参数,否则会打包不通过。
mvn clean package -Dmaven.test.skip=true
等待片刻,待maven打包结束之后,在target目录下会生成一个名为rocketmq-console-ng-1.0.0.ja的二进制包,该项目是使用springboot编写的,因此我们可以直接通过java -jar方式启动。
上传jar包
当然你也可以打包为docker镜像部署,我这里为了方便测试,直接上传到服务端用脚本方式进行启动。
使用rz -y 命令上传jar包到服务端的/app/rocketmq/admin 路径下,编写一个启动脚本,并给予当前用户(我是root)可读写权限。
echo 'nohup java -jar rocketmq-console-ng-1.0.0.jar &' > run.sh
chmod 755 run.sh
设置环境变量namesrv
因为我们没有对源码做修改,因此需要设置一个环境变量,让控制台能够连接到rocketmq的nameserver。
设置namesrv环境变量:
export NAMESRV_ADDR="localhost:9876"
该变量是rocketmq-console-ng-1.0.0项目在启动后默认加载的,因此需要显式指定,这里的“localhost:9876”要和本地启动的nameserver保持一致。否则启动rocketmq-console-ng-1.0.0.jar会报错。
启动控制台
执行启动脚本
sh run.sh
查看nohup输出的日志,显示“boot success”即表示启动成功。
访问页面
访问页面url:
[server-ip]:8080
server-ip是你自己部署的机器的ip,要保证本地能够访问通;8080是rocketmq-console-ng-1.0.0默认的访问端口,该端口可以在启动时候通过 -Dserver.port 进行更改,也可以直接更改源码配置文件application.properties 重新打包,我建议直接通过 -D 进行动态指定。
我在安装的rocketmq的时候已经关掉了服务端防火墙,如果你访问不到机器的8080端口,尝试开放ip权限或者关闭防火墙。
在浏览器输入地址,我的地址为:
http://172.30.83.100:8080/
看到如下界面表明我们的控制台安装成功。
这个页面目前做的已经属于基本可用状态了,
- 支持中英文切换
- 支持查看基本的运行图形
- 支持配置集群属性
- 支持对topic进行配置
- 支持对生产者和消费者进行管理等
如果你有幸用过商业版的rocketmq,你会发现使用该开源版的ui界面也是类似的感觉,可以说是很良心了。
详细的使用方式我会在后续的代码讲解中穿插进行,到这里,我们就拥有了一个最简的可运行可编程可测试的rocketmq环境。