RocketMQ
简介
消息队列(Message Queue)是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题
它可以帮助我们实现高性能,高可用,可伸缩和最终一致性(Eventually Consistent)架构
使用较多的消息队列有ActiveMQ、RabbitMQ、Kafka、RocketMQ
特性 | ActiveMQ | RabbitMQ | RocketMQ | Kafka |
---|---|---|---|---|
语言 | Java | Elang | Java | |
吞吐量 | 万级 | 万级 | 十万级 | 十万级 |
时效性 | 毫秒级 | 微秒级 | 毫秒级 | 毫秒级 |
消息可靠性 | 有较低概率丢失 | 参数调优后可以做到0丢失 | 参数调优后可以做到0丢失 | |
可用性 | 高,支持主从架构 | 高,支持主从架构 | 非常高,分布式架构 | 非常高,AP架构 |
数据体量 | 中 | 中 | 高,支持海量数据的存储 | |
特色 | 功能完善 | 延迟低,并发性高 | 分布式的,扩展性好 |
应用场景
ActiveMQ
更新频率降低,使用的比较少了
RabbitMQ
Elang语言开发的,性能极好,延迟达到微妙级,这是RabbitMQ相较于其他MQ出色的地方
但是想做源码级的定制是比较难的
RocketMQ
阿里系的产品,性能较佳,分布式扩展也比较方便
Kafka
功能较为简单,支持简单的MQ功能,吞吐量高,在大数据领域的实时计算和日志采集被大量应用,是业界标准
安装RocketMQ
RocketMQ是阿里研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目
夸克网盘传送门: https://pan.quark.cn/s/1ae6b333436c
下载安装包
在官网下载RocketMQ
官网下载地址:https://rocketmq.apache.org/download/
目录结构
解压后目录如下所示
配置环境变量
启动nameServer
进入bin目录,启动mqnamesrv.cmd
mqnamesrv.cmd
报错
情况一
启动如果报以下这个错
D:\environment\rocketmq\rocketmq-all-4.8.0-bin-release\bin>mqnamesrv.cmd
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Unrecognized VM option 'UseCMSCompactAtFullCollection'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
将环境变量中的Jdk换成8即可
情况二
这个我没复现成功,就是可能会因为内存不足而导致启动失败,修改runserver.cmd
和runbroker.cmd
的启动脚本即可
runbroker.cmd
runserver.cmd
启动成功
这样nameserver
就算启动成功了
启动broker
修改配置文件
先进入rocketmq安装根目录下的conf文件夹
打开broker.conf,添加以下两行配置
enablePropertyFilter=true
# 指定 nameserver 的地址,把 borker 与 nameserver 关联起来
namesrvAddr=127.0.0.1:9876
进入bin目录,执行以下命令
mqbroker.cmd -c ../conf/broker.conf
启动成功
这样子broker
就算启动成功了
启动web控制台界面
RocketMQ官方为我们提供了web可视化界面
原有的rocketmq-console已被rocketmq-externals单独列为一个项目,现在取名为rocketmq-dashboard
下载方式
方式一
rocketmq-externals的GitHub地址:https://github.com/apache/rocketmq-externals/tags
方式二
rocketmq-dashboard的GitHub地址:https://github.com/apache/rocketmq-dashboard/releases
打包
使用Idea打开源代码了,下载好依赖后,可以看到这个就是一个springboot工程
需要改web端口的自己改,在哪改还不知道的出门右拐👉
等maven把依赖下载完毕,然后执行打包命令
打包完毕后,target文件夹下会出现一个jar包
启动
在rocketmq安装根目录下创建一个文件夹rocketmq-4.8.0-dashboard
,将刚刚的jar包复制过来
打开命令行,执行命令
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
打开http://localhost:9999
,就可以炫酷地进入dashboard了
RocketMQ架构
NameServer
就是即刚刚启动的nameServer,它的功能其实和Eureka、Nacos差不多
本质上就是个服务注册中心,用于保存所有broker的地址信息、状态信息
Broker
就是刚刚启动的broker,它就是消息队列本尊,架构图上画的是主从架构
Producor
生产者,生产消息发送给消息队列的
Consumer
消费者,从消息队列取消息消费的