一、介绍
RocketMQ:云原生“消息、事件、流”实时数据处理平台,覆盖云边端一体化数据处理场景
在阿里孕育 RocketMQ的雏形时期,我们将其用于异步通信、搜索、社交网络活动流、数据管道,贸易流程中。随着我们的贸易业务吞吐量的上升,源自我们的消息传递集群的压力也变得紧迫。
根据我们的研究,随着队列和虚拟主题使用的增加,ActiveMQ IO模块达到了一个瓶颈。我们尽力通过节流、断路器或降级来解决这个问题,但效果并不理想。于是我们尝试了流行的消息传递解决方案Kafka。不幸的是,Kafka不能满足我们的要求,其尤其表现在低延迟和高可靠性方面,详见这里。在这种情况下,我们决定发明一个新的消息传递引擎来处理更广泛的消息用例,覆盖从传统的pub/sub场景到高容量的实时零误差的交易系统。
Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。
二、环境要求
- 64位操作系统,推荐 Linux/Unix/macOS
- 64位 JDK 1.8+
- 本文采用二进制包方式安装,版本为4.4.0
三、下载
3.1 二进制包官网下载链接
点击下载
3.2 二进制包百度网盘下载链接
通过百度网盘分享的文件:rocketmq-all-4.4.0-bin-release.zip
链接:https://pan.baidu.com/s/1Bxk9hz27vM62GFq7SN5eow?pwd=6nwd
提取码:6nwd
3.3 二进制包夸克网盘下载链接
我用夸克网盘分享了「rocketmq-all-4.4.0-bin-release.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/44a5b8eaeb02
3.4 上传到指定目录
我们将文件上传到/root/mq
目录下,然后使用unzip
命令进行解压
然后我们使用mv
命令重命名文件,命令如下
mv rocketmq-all-4.4.0-bin-release rocketmq
接着使用cd
命令进入对应文件夹
cd rocketmq
四、目录介绍
4.1 benchmark
存放一些demo,可以直接运行。
4.2 bin
启动脚本,包括shell脚本和cmd脚本
4.3 conf
RocketMQ实例配置文件,包过broker配置文件,logback配置文件等
4.4 lib
依赖第三方jar包,包括Netty、commons-lang、FastJSON等
五、启动RocketMQ
5.1 启动NameServer
# 1.进入bin目录
cd /root/mq/rocketmq/bin
# 2.启动NameServer
nohup sh mqnamesrv &
# 3.查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log
看到下图代表启动成功
5.2 启动Broker
# 1.进入bin目录
cd /root/mq/rocketmq/bin
# 2.启动Broker
nohup sh mqbroker -n localhost:9876 &
# 3.查看启动日志
tail -f ~/logs/rocketmqlogs/broker.log
如果发现tail
命令找不到文件的话,说明可能Broker启动失败了。需要我们进行排查(可以参考备注)
启动成功图片如下
六、测试RocketMQ
我们在启动两个窗口进行测试,两个窗口都进入bin目录
cd /root/mq/rocketmq/bin
6.1 第一个窗口
然后我们在第一个窗口,输入下面代码,发送消息
# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.使用安装包的Demo发送消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
发送成功如图所示
6.2 第二个窗口
# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.接收消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
我们可以看到第二个窗口一直处于正在接受信息的状态,同时上面输出的消息也是第一个窗口发送的
七、关闭RocketMQ
# 1.进入bin目录
cd /root/mq/rocketmq/bin
# 2.关闭NameServer
sh mqshutdown namesrv
# 3.关闭Broker
sh mqshutdown broker
八、备注
RocketMQ默认的虚拟机内存为8G,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小
# 编辑runbroker.sh和runserver.sh修改默认JVM大小
vi runbroker.sh
vi runserver.sh
# 参考配置 按i键进入插入模式,按ESC后输入 :wq 保存
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
然后重启nameserver和broker