RocketMQ, Dashboard, 控制台安装
文章说明
本文主要说明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]; thenecho "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"; thenecho "rocketmq nameserver is running.";
elseecho "rocketmq nameserver is Starting ...";rm -rf nohup.out;nohup sh mqnamesrv &count=0while [ $count -le 10 ]; doif tail -100 nohup.out | grep "Name Server boot success"; thenecho "rocketmq nameserver has been started successfully";breakelsecount=$((count+1))sleep 2fidone
fi# 启动rocketmq broker
# 检查Zookeeper是否启动成功
if jps -ml | grep "org.apache.rocketmq.broker.BrokerStartup"; thenecho "rocketmq broker is running.";
elseecho "rocketmq broker is Starting ...";rm -rf nohup.out;nohup sh mqbroker -c ../conf/broker.conf -n dev-study:9876 autoCreateTopicEnable=true & count=0while [ $count -le 10 ]; doif tail -100 nohup.out | grep "broker.*success"; thenecho "rocketmq broker has been started successfully";breakelsecount=$((count+1))sleep 2fidone
fi# 启动rocketmq dashboard
cd ${ROCKETMQ_HOME}/dashboard
if jps -ml | grep "rocketmq-dashboard"; thenecho "rocketmq dashboard is running.";
elseecho "rocketmq dashboard is Starting ...";rm -rf nohup.out;nohup java -jar rocketmq-dashboard-1.0.0.jar & count=0while [ $count -le 10 ]; doif tail -100 nohup.out | grep "Tomcat started on port(s)"; thenecho "rocketmq dashboard has been started successfully";breakelsecount=$((count+1))sleep 2fidone
fiecho "All services started.";
相关文章:

RocketMQ, Dashboard, 控制台安装
文章说明 本文主要说明RocketMQ的控制台(Dashboard)的安装过程。工作中一直用的是别人装好的,这次终于自己亲手装了一遍。 由于每次都要启动三个应用,比较烦,于是我写了一键启动脚本,分享给大家。这个脚本…...

chrome解决http自动跳转https问题
1.地址栏输入: chrome://net-internals/#hsts 2.找到底部Delete domain security policies一栏,输入想处理的域名,点击delete。 3.再次访问http域名不再自动跳转https了。...
FastGithub 下载
Releases dotnetcore/FastGithub GitHub 无需安装,双击UI程序即可运行。...

TSINGSEE青犀视频安防监控管理平台EasyNVR如何配置鉴权?
视频监控汇聚平台EasyNVR是基于RTSP/Onvif协议的视频平台,可支持将接入的视频流进行全平台、全终端的分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。为了满足用户的集成与二次开发需求,我们也提供了丰富的API接口供…...

unittest 数据驱动DDT应用
前言 一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向、逆向等多种组合。所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别。 这个时候就可以利用ddt来管理测试数据…...
素数个数——数论
题目描述 求 1,2,⋯,N 中素数的个数。 输入格式 一行一个整数 N。 输出格式 一行一个整数,表示素数的个数。 样例 #1 样例输入 #1 10样例输出 #1 4提示 对于 100% 的数据,1≤1081≤N≤108。 本题时间限制在2秒以内。 因为题目时间限制是2秒,所…...

express编写一个简单的get接口
/01编写get接口.jsconst express require(express) const app express()// 创建路由 const useRouter require(./router/user.js) // 注册路由 app.use(/api,useRouter)app.listen(8080, (req, res) > {console.log(8080监听) }) ./02编写post接口 // 注意:如…...
【力扣刷题C++】环形链表
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/linked-list-cycle 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 【题目】给你一个链表的头节点 head ,判断链表中是否有…...

如何用Python统计CSDN质量分
文章目录 CSDN质量分查询selenium爬取博客地址单篇测试批量查询分析 CSDN质量分查询 CSDN对博客有一套分数评价标准,其查询入口在这里:质量分查询,效果大致如下 如果质量分太低,就会在博文的标题下面出现黄底黄字: 这…...

gin框架内容(三)--中间件
gin框架内容(三)--中间件 Gin框架允许开发者在处理请求的过程中,加入用户自己的函数。这个函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等 即比如&#x…...

如何在工作中利用Prompt高效使用ChatGPT
导读 AI 不是来替代你的,是来帮助你更好工作。用better prompt使用chatgpt,替换搜索引擎,让你了解如何在工作中利用Prompt高效使用ChatGPT。 01背景 现在 GPT 已经开启了人工智能狂潮,不过是IT圈,还是金融圈。 一开…...

uniapp-小程序button分享传参,当好友通过分享点开该页面时,进行一些判断……
一、需求描述: 该小程序中,点击圈子列表页面—>进入圈子详情页面,在圈子详情页面点击button分享按钮后,发送给好友。当好友通过分享点开该页面时: 1.先判断是否登录,如果没有,先去登录&#…...

Ceph部署方法介绍
Ceph部署方法介绍 Installing Ceph — Ceph Documentation Ceph环境规划 admin是一个部署节点...

GoogleLeNet V2 V3 —— Batch Normalization
文章目录 Batch Normalizationinternal covariate shift激活层的作用BN执行的位置数据白化网络中的BN层训练过程 BN的实验效果MNIST与GoogleLeNet V1比较 GoogleLeNet出来之后,Google在这个基础上又演进了几个版本,一般来说是说有4个版本,之前…...

Mac 系统钥匙串证书不受信任
Mac 系统钥匙串证书不受信任 解决办法 通过尝试安装 Apple PKI 的 Worldwide Developer Relations - G4 (Expiring 12/10/2030 00:00:00 UTC) 解决该异常问题 以上便是此次分享的全部内容,希望能对大家有所帮助!...

一个企业级的文件上传组件应该是什么样的
目录 1.最简单的文件上传 2.拖拽粘贴样式优化 3.断点续传秒传进度条 文件切片 计算hash 断点续传秒传(前端) 断点续传秒传(后端) 进度条 4.抽样hash和webWorker 抽样hash(md5) webWorker 时间切片 5.文件类型判断 通过文件头判断文件类型 6.异步并发数控制(重要…...
安全渗透重点内容
this是js中的一个关键字,在不同的场合使用,this的值会发生变化,下面我将详细的介绍this在函数中的各种指向。 在方法中,this表示该方法所属的对象。 如果单独使用,this表示全局对象。 在函数中,this表示全…...

【触觉智能Purple Pi OH开发板体验】开箱体验:开源主板Purple Pi RK3566 上手指北
前言 前段时间收到来自【电子发烧友】的一款开发板,名叫:PurplePi,216G售价仅249元。它使用的芯片是rk3566,适配的OpenHarmony版本为3.2 Release 是目前最便宜的OpenHarmony标准系统开源开发板,并且软硬件全部开源&am…...
flink1.16使用消费/生产kafka之DataStream
flink高级版本后,消费kafka数据一种是Datastream 一种之tableApi。 上官网 Kafka | Apache Flink Kafka Source 引入依赖 flink和kafka的连接器,里面内置了kafka-client <dependency><groupId>org.apache.flink</groupId><arti…...

【多任务编程-线程通信】
进程/线程通信的方式 某些应用程序中,进程/进程和线程/线程之间不可避免的进行通信,进行消息传递,数据共享等 同一进程的线程之间通信方式包括Windows中常用Event, Message等。 不同进程之间的通信可以利用Event, FileMapping(内存共享), W…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...