RocketMQ,正如其名,火箭MQ,主打一个快,主要包含了以下的核心组件,这里简单介绍下。
组件 | 作用 |
NameServer | 轻量级路由中心,负责管理 Broker 节点的元数据(如 Broker 地址、Topic 路由信息)。 |
Broker | 消息存储与转发核心,负责接收生产者消息、存储消息、推送给消费者。 |
Producer | 消息生产者,支持负载均衡(轮询、随机等策略)向多个 Broker 发送消息。 |
Consumer | 消息消费者,支持 拉模式(Pull) 和 推模式(Push),提供集群消费和广播消费两种模式。 |
可以完成 异步解耦、流量削峰、分布式事务、数据同步、日志采集与监控 这些功能,是自己玩消息队列的不二之选!
哈哈哈哈,话不多说,下面就开是我们的安装之旅吧
零、前置准备
首先是要确保我们虚拟机中有JDK!
我是使用的傻瓜安装的方式,然后等就好了...
# 这里我安装的是jdk21,根据需要换成自己的目标版本即可
rpm -ivh jdk-21_linux-x64_bin.rpm
验证一下,确保在非安装目录下,通过java -version
可以看到如下内容,即表明我们安装成功~
前置工作完成后,我们可以开始安装啦~
一、拉取安装包
先得让我们的虚拟机有相关的包,这有两种方式,
1.官网下载后,上传至我们的虚拟机,(下载 | RocketMQ 进入官网后选择目标版本,选择Binary 下载)
2.通过命令直接拉取,具体连接可以从官网下载处获取(执行前可以提前到目标路径)
wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.3/rocketmq-all-5.3.3-bin-release.zip
3.拉取成功后,在目标路径下解压缩
unzip rocketmq-all-5.3.3-bin-release.zip
# 如果提示 unzip: 未找到命令,可以执行以下命令,先安装一下工具
# yum -y install unzip
一点五、改启动参数(非必须)
ps:因为这里并非真实生产服务器,仅仅用于个人捣鼓,所以对启动参数进行了一点调整...虚拟机资源有限,避免内存溢出,如果您内存资源很充足,可以忽略此处。
这里主要涉及两个配置文件,bin/runserver.sh,bin/runbroker.sh;
1.我们这里先通过vim对bin目录下的runserver.sh文件进行操作
vim 你的安装目录.../rocketmq-all-5.3.3-bin-release/bin/runserver.sh
随后通过/查找到 JAVA_OPT -server处,观察其配置
我们先看下这一段内容是干啥的
-server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
-server # 指定 JVM 使用服务器模式运行
-Xms4g # 设置 JVM 初始堆内存大小为 4GB(-Xms是-XX:InitialHeapSize的简写)
-Xmx4g # 设置 JVM 最大堆内存大小为 4GB(-Xmx是-XX:MaxHeapSize的简写)
-Xmn2g # 设置新生代(Young Generation)堆内存大小为 2GB
-XX:MetaspaceSize=128m # 设置元空间(Metaspace)的初始大小为 128MB
-XX:MaxMetaspaceSize=320m # 设置元空间的最大大小为 320MB
上面给出了比较详细的解释,这里我们选择将初始堆内存,最大堆内存,新生代堆内存都折半,设置为2g,2g,1g(没特殊说法...);
2.随后,我们通过vim对bin目录下的runbroker.sh文件进行操作
我们可以看到这里起手就是8g!!!真的很不小!这里我选择设置为2g
二、启动!!
正如前面我们两处调整启动参数,启动也是分NameServer和Broker滴
1.启动 NameServer
# 启动(不要漏了&)
nohup sh bin/mqnamesrv -n "你虚拟机分配的ip地址:9876" &
# 验证
# 看到 "The Name Server boot success" 表示启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
当当~
2. 启动 Broker
对于broker,如果我们是要进行集群部署的话,需要调整一下conf/broker.conf配置文件
brokerClusterName=DefaultCluster
brokerName=broker-a # 主从节点使用相同的brokerName
brokerId=0 # 主节点为0,从节点为>0
namesrvAddr=x.x.x.x:9876 # 指向目标NameServer的ip,(ip1:9876;ip2:9876;ip3:9876)
# 后台启动brocker
nohup sh bin/mqbroker -c conf/broker.conf &
# 验证
# 看到 "the broker[broker-a, x.x.x.x:10911] boot success" 表示启动成功
tail -f ~/logs/rocketmqlogs/broker.log
当当~
3.设置防火墙,使得外部可以对其进行访问
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent
firewall-cmd --reload
三、停止
停止没啥,直接上命令
# 关闭 NameServer
sh bin/mqshutdown namesrv
# 关闭 Broker
sh bin/mqshutdown broker
至此,一个还算顺利的RocketMq安装就完成啦~