目录
一、MQ概述
1.MQ是什么
MQ全称为Message Queue,即消息队列 ,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生 产、存储、消费全过程的软件系统,遵循FIFO原则。
2.MQ的使用场景
-
限流削峰
MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统 被压垮。
-
异步&解耦
上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。 而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转化,一般性做法就是,在这两层间添加一个MQ层。 即使消费者挂掉也不影响生产者工作,只要把消息放入队列即可,消费者重启后自己消费即可。
-
数据收集
分布式系统会产生海量级数据流,如:业务日志、监控数据、用户行为等。针对这些数据流进行实时或 批量采集汇总,然后对这些数据流进行大数据分析,这是当前互联网平台的必备技术。通过MQ完成此 类数据收集是最好的选择。
-
大数据处理
比如我们的平台向“三方平台”获取数据,一次请求了大量数据回来要进行处理,由于数据较多处理不过来,那么就可以放入MQ,再创建一些消费者进行数据处理即可。
【注意
】如下情况不太适合MQ
- 小项目,体量不大,并发量低的使用MQ会太过笨重 - 你可以考虑使用Redis做一个消息队列。
- 对数据的一致性有要求(强一致性)的的场景不适合使用MQ,因为MQ是异步的。
二、下载
官网下载地址:https://rocketmq.apache.org/download/,我这里下载的版本是5.1.0,也可根据自己的喜好下载其他版本
三、安装
1.解压安装
1.将下载好压缩包解压到一个无空格无中文的目录下
2.配置环境变量
变量名:ROCKETMQ_HOME
变量值:MQ解压路径\MQ文件夹名(bin目录的上一级即可)
四.启动RocketMQ
1.启动NameServer
在bin目录下执行cmd命令呼出命令框,执行 start mqnamesrv.cmd,启动NameServer。
2.启动Broker
在bin目录下执行cmd命令呼出命令框,执行 start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable = true,启动Broker。
至此完成RocketMQ的启动。
3.RocketMQ存储结构
RocketMQ安装好之后会在用户目录下产生一个 store 目录用来存储相关数据
-
Commitlog : 消息是存储,在commitlog目录中,以mapperdFile文件顺序存储消息。
-
Config : 存放运行期间的配置文件
-
Consumerqueue : 该目录中存放的是队列,consume queue存放着commitlog中的消息的索引位置
4.注意事项
启动报错:弹出提示框‘错误: 找不到或无法加载主类 xxxxxx’的处理
找到bin目录下的runbroker.cmd文件打开并修改%CLASSPATH%,加上双引号并重新start
内存不足报错:RocketMQ默认的虚拟机内存较大,启动如果因为内存不足报错则需要编辑bin目录下的runbroker.cmd和runserver.cmd,从而来修改默认的JVM内存大小;根据自己的需求修改即可。
runserver.cmd→对应的是nameServer的配置
例如:配置以下参数将 RocketMQ 的启动 JVM 的 堆空间内存控制在 1g,新生代控制在 512m。元空间初始 128m,最大 320m。
runbroker.cmd →对应的是broker的配置
五、RocketMQ可视化插件
1.下载插件
可视化界面下载地址:https://gitcode.net/mirrors/apache/rocketmq-dashboard?utm_source=csdn_github_accelerator,直接克隆源码到本地,使用IDEA启动即可,也可下载ZIP包在使用IDEA打开。
2.启动插件
打开后可在application.yml中进行端口修改,我这里使用的默认端口。
在IDEA中启动项目后用浏览器访问http://localhost:8080即可。
3.打包插件
我们在实际使用中,并不可能每次都要打开IDEA来运行可视化插件,这样很麻烦,我们可以直接将其打成jar包,用命令运行即可。在rocketmq-dashboard目录下执行 mvn clean package -Dmaven.test.skip=true。当然也可以直接用IDEA打包。
打包成功后会在target目录下生成一个jar包
执行 java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar 启动jar包,访问http://localhost:8080
4.快速启动MQ
要启动MQ总共要执行三个命令,很麻烦还不一定都记得住,那么我们就可以自己写一个启动MQ的脚本,三个命令都放进去,直接双击完成启动。在这之前,需要把打好的jar包放到一个固定的位置,我这里直接放到RocketMQ的安装路径下。然后创建文本rocketmq-start.txt,内容如下:
#特别注意:启动NameServer和Broker是在bin目录下
#启动NameServer
start bin\mqnamesrv.cmd
#启动Broker
start bin\mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
#启动可视化插件
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
保存后将后缀改成bat,发送快捷方式到桌面就可以双击启动了。
双击后同时弹出这三个弹窗表示启动RocketMQ成功