文章说明
本文主要说明RocketMQ的控制台(Dashboard)的安装过程。工作中一直用的是别人装好的,这次终于自己亲手装了一遍。
由于每次都要启动三个应用,比较烦,于是我写了一键启动脚本,分享给大家。这个脚本可以一键启动RocketMQ的所有应用。还能自动识别应用是否已经启动成功。
文章目录
- 文章说明
- 参考说明
- 控制台(Dashboard)
- 环境要求
- 下载
- 修改配置
- 打包
- 启动
- 访问
- 控制台使用
- 一键启动脚本
参考说明
本文内容主要来源于马士兵李瑾老师的视频教程(RocketMQ基础实战版),结合了老师的笔记以及根据自己的实践做了一些修改。
控制台(Dashboard)
官网文档:https://rocketmq.apache.org/zh/docs/4.x/deployment/03Dashboard
环境要求
jdk1.8,Maven 3.2.x+
启动前确认:RocketMQ NameServer和Broker已安装且已经启动成功。
下载
新版本地址(推荐):https://rocketmq.apache.org/zh/download
老版本地址下载:https://codeload.github.com/apache/rocketmq-externals/zip/master
本文用的是RocketMQ Dashboard 1.0.0 新版本。
下载成功后解压到一个源代码目录。例如:D:\Workspace\idea\alibaba\rocketmq-dashboard-1.0.0
修改配置
使用idea载入刚才下载好的源代码,然后在settings中确认maven配置正确。
打开src/main/resources/application.properties文件,进行如下配置
# dashboard服务启动之后的端口
server.port=8089
# 配置NameServer地址,如果多个可以以分号隔开
rocketmq.config.namesrvAddr=localhost:9876
打包
执行mvn install -Dmaven.test.skip=true命令,可以在右侧的Maven页签的lifecycle中双击install,同时勾选Skip Test。
成功的话会在target目录生成jar包:rocketmq-dashboard-1.0.0.jar
启动
启动之前,请先确保配置文件中对应的NameSever和Broker已经启动。否则dashboard启动起来也没读取不到内容。
启动有如下方式
- 通过打出来的jar包启动。cmd进入项目target目录,执行java -jar rocketmq-dashboard-1.0.0.jar
- 通过代码直接启动。通过启动类org.apache.rocketmq.dashboard.App启动
访问
浏览器输入localhost:8089,成功后即可进行管理端查看。
控制台使用
运维
-
你可以修改这个服务使用的namesrv的地址
-
你可以修改这个服务是否使用VIPChannel(如果你的mq server版本小于3.5.8,请设置不使用)
驾驶舱
-
查看broker的消息总量,左边的是最近5分钟的趋势图。
-
查看单一主题的消息量(总量/趋势图)
集群
-
查看集群的broker情况,分布情况,cluster与broker关系
-
查看broker具体信息/运行信息
-
查看broker配置信息
主题页面
-
展示所有的主题,可以通过搜索框进行过滤
-
筛选 普通/重试/死信 主题,重试为消息发送失败之后的重试主题。死信就是默认发送失败15次的消息。
-
添加/更新主题
l clusterName 创建在哪几个cluster上
l brokerName 创建在哪几个broker上
l topicName 主题名
l writeQueueNums 写队列数量
l readQueueNums 读队列数量
l perm //2是写 4是读 6是读写
-
状态 查询消息投递状态(投递到哪些broker/哪些queue/多少量等)
-
路由 查看消息的路由(现在你发这个主题的消息会发往哪些broker,对应broker的queue信息)
-
CONSUMER管理(这个topic都被哪些group消费了,消费情况何如)
-
topic配置(查看变更当前的配置)
-
发送消息(向这个主题发送一个测试消息)
-
重置消费位点(分为在线和不在线两种情况,不过都需要检查重置是否成功)
-
删除主题 (会删除掉所有broker以及namesrv上的主题配置和路由信息)
消费者页面
-
展示所有的消费组,可以通过搜索框进行过滤
-
刷新页面/每隔五秒定时刷新页面
-
按照订阅组/数量/TPS/延迟 进行排序
-
添加/更新消费组
l clusterName 创建在哪几个集群上
l brokerName 创建在哪几个broker上
l groupName 消费组名字
l consumeEnable //是否可以消费 FALSE的话将无法进行消费
l consumeBroadcastEnable //是否可以广播消费
l retryQueueNums //重试队列的大小
l brokerId //正常情况从哪消费
l whichBrokerWhenConsumeSlowly//出问题了从哪消费
-
终端 在线的消费客户端查看,包括版本订阅信息和消费模式
-
消费详情 对应消费组的消费明细查看,这个消费组订阅的所有Topic的消费情况,每个queue对应的消费client查看(包括Retry消息)
-
配置 查看变更消费组的配置
-
删除 在指定的broker上删除消费组
生产者页面
通过Topic和Group查询在线的消息生产者客户端
信息包含客户端主机 版本
消息查询页面
-
根据Topic和时间区间查询 *由于数据量大 最多只会展示2000条,多的会被忽略
-
根据Topic和Key进行查询
最多只会展示64条
-
根据消息主题和消息Id进行消息的查询
-
消息详情可以展示这条消息的详细信息,查看消息对应到具体消费组的消费情况(如果异常,可以查看具体的异常信息)。可以向指定的消费组重发消息
一键启动脚本
这个脚本主要用于一键启动RocketMQ的NameServer,Broker,Dashboard三个应用。
并且启动之前会自动识别要启动的应用是否已经启动,启动成功则自动启动下一个。
#!/bin/bash
#软件安装目录设置,先读环境变量,读不到则用默认值
ROCKETMQ_HOME=$ROCKETMQ_HOME
if [ -z $ROCKETMQ_HOME]; then
echo "ROCKETMQ_HOME is not set! the program will use default value"
ROCKETMQ_HOME=/www/wwwroot/install/rocketmq-all-4.9.7-bin-release
fi
echo "ROCKETMQ_HOME=$ROCKETMQ_HOME"
# 启动rocketmq nameserver
cd ${ROCKETMQ_HOME}/bin
# 检查Zookeeper是否启动成功
if jps -ml | grep "namesrv.NamesrvStartup"; then
echo "rocketmq nameserver is running.";
else
echo "rocketmq nameserver is Starting ...";
rm -rf nohup.out;
nohup sh mqnamesrv &
count=0
while [ $count -le 10 ]; do
if tail -100 nohup.out | grep "Name Server boot success"; then
echo "rocketmq nameserver has been started successfully";
break
else
count=$((count+1))
sleep 2
fi
done
fi
# 启动rocketmq broker
# 检查Zookeeper是否启动成功
if jps -ml | grep "org.apache.rocketmq.broker.BrokerStartup"; then
echo "rocketmq broker is running.";
else
echo "rocketmq broker is Starting ...";
rm -rf nohup.out;
nohup sh mqbroker -c ../conf/broker.conf -n dev-study:9876 autoCreateTopicEnable=true &
count=0
while [ $count -le 10 ]; do
if tail -100 nohup.out | grep "broker.*success"; then
echo "rocketmq broker has been started successfully";
break
else
count=$((count+1))
sleep 2
fi
done
fi
# 启动rocketmq dashboard
cd ${ROCKETMQ_HOME}/dashboard
if jps -ml | grep "rocketmq-dashboard"; then
echo "rocketmq dashboard is running.";
else
echo "rocketmq dashboard is Starting ...";
rm -rf nohup.out;
nohup java -jar rocketmq-dashboard-1.0.0.jar &
count=0
while [ $count -le 10 ]; do
if tail -100 nohup.out | grep "Tomcat started on port(s)"; then
echo "rocketmq dashboard has been started successfully";
break
else
count=$((count+1))
sleep 2
fi
done
fi
echo "All services started.";