1.yum 安装 upunzip
java
yum install -y unzip
2.创建文件夹存放RocketMQ, 安装之前需要安装JDK
java
mkdir -p /opt/tools/rocketmq
3.下载 RocketMQ 上传到 /opt/tools/rocketmq
4.切换目录、解压
java
cd /opt/tools/rocketmq
unzip rocketmq-all-5.1.4-bin-release.zip
# 名称太长、修改一下
mv rocketmq-all-5.1.4-bin-release rocket-5.1
4.配置环境变量
java
# 编辑
vim /etc/profile
# 添加
export NAMESRV_ADDR=公网IP:9876
# 刷新
source /etc/profile
5.修改配置文件
java
# 第一个:
vim /opt/tools/rocketmq/rocket-5.1/bin/runserver.sh
# Example of JAVA_MAJOR_VERSION value : '1', '9', '10', '11', ...
# '1' means releases befor Java 9
JDK 8版本之前修改:
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=64m"
JDK 9版本之后修改:
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=64m"
注意:JDK 9 版本在 else 下面
# 保存退出
esc+:wq
# 第二个:
vim /opt/tools/rocketmq/rocket-5.1/bin/runbroker.sh
# 找到修改-Xms128m -Xmx128m
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m"
choose_gc_options
# 保存退出
esc+:wq
# 第三个:
vim /opt/tools/rocketmq/rocket-5.1/conf/broker.conf
# 添加下面三个配置
namesrvAddr = xxx.xxx.xxx.xx:9876
autoCreateTopicEnable = true
brokerIP1 = xxx.xxx.xxx.xx
# 指定NameServer的地址,格式为<IP>:<Port>
# namesrvAddr = xxx.xxx.xxx.xx:9876
# 是否允许自动创建主题,当生产者发送消息到一个尚不存在的主题时,如果设置为true,RocketMQ会自动创建这个主题
# autoCreateTopicEnable = true
# 指定Broker节点的IP地址,通常在集群部署时会配置多个Broker节点
# brokerIP1 = xxx.xxx.xxx.xx
6.创建日志目录和启动
java
# 创建日志目录
mkidr /opt/tools/rocketmq/rocket-5.1/logs
# 启动
nohup sh mqnamesrv > /opt/tools/rocketmq/rocket-5.1/logs/namesv.log 2>&1 &
nohup sh mqbroker -c /opt/tools/rocketmq/rocket-5.1/conf/broker.conf > /opt/tools/rocketmq/rocket-5.1/logs/broker.log 2>&1 &
# 也可以切换bin目录下启动
nohup sh mqnamesrv > ../logs/namesv.log 2>&1 &
nohup sh mqbroker -c ../conf/broker.conf > ../logs/broker.log 2>&1 &
# 我使用的 netstat -nltp 查看是否启动,没有启动去看log日志
mqnamesrv和mqbroker是两个不同的组件
mqnamesrv:
NameServer(名称服务)是RocketMQ中的一种核心组件,负责管理整个消息队列系统的元数据信息,
包括主题(Topic)、队列(Queue)、Broker集群等。
NameServer充当了路由查询的中心,当Producer或Consumer需要发送或接收消息时,
它们会向NameServer查询路由信息,以确定消息应该发送到哪个Broker上。
NameServer是轻量级的,不存储消息数据,主要负责维护路由信息,因此它的资源消耗相对较低。
mqbroker:
Broker(消息代理)是RocketMQ中另一个重要的组件,负责存储和传递消息,是实际处理消息的节点。
每个Broker节点负责管理一部分主题的消息存储和消息传递,它们之间可以组成一个Broker集群,以提高消息的可用性和吞吐量。
Broker存储了消息数据,并且负责处理Producer发送过来的消息,并将消息分发给相应的Consumer进行消费。
7.firewall 防火墙配置
firewall 防火墙配置 <==== 详细配置
java
开放:9876、10909、10911、10912、8081
需要放开以下端口:
NameServer端口:默认为9876端口,用于NameServer组件之间进行通信,以及Producer和Consumer与NameServer通信获取路由信息。
Broker端口:默认为10909(TCP)、10911(TCP)、10912(TCP)等一系列端口,用于Broker节点之间的通信,
以及Producer和Consumer与Broker节点进行消息发送和接收。
Web管理控制台端口:默认为8081端口,用于RocketMQ的Web管理控制台,可以通过该端口访问RocketMQ的管理界面,进行监控、配置和管理操作。
8.RocketMQ的Web管理控制台
rocketmq-dashboard-1.0.1-SNAPSHOT.jar 也可以自己下载源码编译,我试过了,很慢
https://download.csdn.net/download/a1308003218/88840610 一位热心网友提供下载地址
上传到 /opt/tools/rocketmq/
运行rocketmq-dashboard-1.0.1-SNAPSHOT.jar
java
# 修改自己IP
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar --server.port=8081 --rocketma.config.namesrvAddr=xxx.xxx.xxx.xx:9876 > dashboard.log 2>&1 &
# 内存消耗有点大,使用 free -h 查看,保守900M左右