千家信息网

RocketMQ的部署过程

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"RocketMQ的部署过程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"RocketMQ的部署过程"吧!1、RocketMQ介绍1
千家信息网最后更新 2026年11月01日RocketMQ的部署过程

这篇文章主要讲解了"RocketMQ的部署过程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"RocketMQ的部署过程"吧!

1、RocketMQ介绍

1.1. 简介

RocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点:

能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力

选用理由:

  • 强调集群无单点,可扩展,任意一点高可用,水平可扩展。

  • 海量消息堆积能力,消息堆积后,写入低延迟。

  • 支持上万个队列

  • 消息失败重试机制

  • 消息可查询

  • 开源社区活跃

  • 成熟度(经过双十一考验)

1.2. 关键概念

1.2.1. 主题与标签

主题Tpoic:第一级消息类型,书的标题 标签Tags:第二级消息类型,书的目录,可以基于Tag做消息过滤

例如:

主题:订单交易

标签:订单交易-创建 订单交易-付款 订单交易-完成

1.2.2. 发送与订阅群组

生产组:用于消息的发送。

消费组:用于消息的订阅处理。

生产组和消费组,方便扩缩机器,增减处理能力,集群组的名字,用于标记用 途中的一员。每次只会随机的发给每个集群中的一员。

2、RocketMQ集群方式

推荐的几种 Broker 集群部署方式,这里的Slave 不可写,但可读,类似于 Mysql 主备方式。

操作系统: 64bit OS, Linux/Unix/Mac is recommended;

内存至少: 8G 建议 16G

2.1.单个 Master

这种方式风险较大,一旦Broker 重启或者宕机时,会导致整个服务不可用,不建议线上环境使用。

2.2.多 Master 模式

一个集群无 Slave,全是 Master,例如 2 个 Master 或者 3 个 Master

优点:配置简单,单个Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢复情况下,由与 RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)

。性能最高。

缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订 阅,消息实时性会受到受到影响。

### 先启动 NameServer

### 在机器 A,启动第一个 Master

### 在机器 B,启动第二个 Master

2.1. 多 Master 多 Slave 模式,异步复制

每个 Master 配置一个 Slave,有多对Master-Slave,HA

采用异步复制方式,主备有短暂消息延迟,毫秒级。 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为

Master 宕机后,消费者仍然可以从 Slave

消费,此过程对应用透明。不需要人工干预。性能同多 Master 模式几乎一样。 缺点:Master 宕机,磁盘损坏情况,会丢失少量消息。

### 先启动 NameServer

### 在机器 A,启动第一个 Master

### 在机器 B,启动第二个 Master

### 在机器 C,启动第一个 Slave

### 在机器 D,启动第二个 Slave

2.2. 多 Master 多 Slave 模式,同步双写

每个 Master 配置一个 Slave,有多对Master-Slave,HA

采用同步双写方式,主备都写成功,向应用返回成功。

优点:数据与服务都无单点,Master宕机情况下,消息无延迟,服务可用性与 数据可用性都非常高

缺点:性能比异步复制模式略低,大约低 10%左右,发送单个消息的 RT

会略高。目前主宕机后,备机不能自动切换为主机,后续会支持自动切换功能。

### 先启动 NameServer

### 在机器 A,启动第一个 Master

### 在机器 B,启动第二个 Master

### 在机器 C,启动第一个 Slave

### 在机器 D,启动第二个 Slave

以上 Broker 与 Slave 配对是通过指定相同的brokerName 参数来配对,Master 的 BrokerId 必须是 0,Slave 的BrokerId 必须是大与 0 的数。另外一个 Master 下面可以挂载多个 Slave,同一 Master 下的多个 Slave通过指定不同的 BrokerId 来区分。

3、RocketMQ部署【双Master方式】

3.1. 服务器环境

序号

IP

用户名

密码

角色

模式

1

192.168.100.24

root

nameServer1,brokerServer1

Master1

2

192.168.100.25

root

nameServer2,brokerServer2

Master2

3.2. Hosts添加信息 【两台机器】
# vi /etc/hosts
[root@cs11-cluster-2 rocketmq]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.100.24   rocketmq-master1   rocketmq-nameserver1192.168.100.25   rocketmq-master2   rocketmq-nameserver2

IP

NAME

192.168.100.24

rocketmq-nameserver1

192.168.100.24

rocketmq-master1

192.168.100.25

rocketmq-nameserver2

192.168.100.25

rocketmq-master2

3.3.上传解压【两台机器】
安装包获取方式一,最新代码:下载git代码:https://github.com/apache/incubator-rocketmq.git安装:64bit JDK 1.8+;Maven 3.2.x进入项目执行mvn编译打包:cd incubator-rocketmqmvn -Prelease-all -DskipTests clean install -Ucd distribution/target/将打包好的代码,推送到两台服务器:apache-rocketmq.tar.gz  或 apache-rocketmq.zip
 
安装包获取方式二:下载git代码:https://github.com/apache/incubator-rocketmq.git进入项目包:cd incubator-rocketmq/将: distribution 打包,推送到两台服务器。
3.4.创建存储路径【两台机器】
#    mkdir /usr/local/rocketmq/store#    mkdir /usr/local/rocketmq/store/commitlog#    mkdir /usr/local/rocketmq/store/consumequeue#    mkdir /usr/local/rocketmq/store/index
3.5. RocketMQ配置文件【两台机器】

# vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties

# vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

#所属集群名字 brokerClusterName=rocketmq-cluster#broker名字,注意此处不同的配置文件填写的不一样  broker-a|broker-bbrokerName=broker-a#0 表示 Master,>0 表示 Slave brokerId=0#nameServer地址,分号分割namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数defaultTopicQueueNums=4#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭autoCreateTopicEnable=true#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭autoCreateSubscriptionGroup=true#Broker 对外服务的监听端口listenPort=10911#删除文件时间点,默认凌晨 4点deleteWhen=04#文件保留时间,默认 48 fileReservedTime=120#commitLog每个文件的大小默认1G 1024 * 1024 * 1024mapedFileSizeCommitLog=1073741824#检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88#存储路径storePathRootDir=/usr/local/rocketmq/store#commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog#消费队列存储路径storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue#消息索引存储路径storePathIndex=/usr/local/rocketmq/store/index#checkpoint 文件存储路径storeCheckpoint=/usr/local/rocketmq/store/checkpoint#abort 文件存储路径abortFile=/usr/local/rocketmq/store/abort#限制的消息大小 maxMessageSize=65536#flushCommitLogLeastPages=4#flushConsumeQueueLeastPages=2#flushCommitLogThoroughInterval=10000#flushConsumeQueueThoroughInterval=60000#Broker 的角色#- ASYNC_MASTER 异步复制Master#- SYNC_MASTER 同步双写Master#- SLAVEbrokerRole=ASYNC_MASTER#刷盘方式#- ASYNC_FLUSH 异步刷盘#- SYNC_FLUSH 同步刷盘flushDiskType=ASYNC_FLUSH#checkTransactionMessageEnable=false#发消息线程池数量#sendMessageThreadPoolNums=128#拉消息线程池数量#pullMessageThreadPoolNums=128
 

3.6. 修改日志配置文件【两台机器】

#    mkdir -p /usr/local/rocketmq/logs#    cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
3.7. 修改启动脚本参数【两台机器】(堆内存最少设置为1g,不然会出错)

# vim /usr/local/rocketmq/bin/runbroker.sh

#=====================================================================# 开发环境JVM Configuration#==============================================================================JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

# vim /usr/local/rocketmq/bin/runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"
3.8. 启动NameServer【两台机器】
[root@cs11-cluster-1 rocketmq]# cat shell/start_namesvr.sh #!/bin/shnohup sh  /usr/local/rocketmq/bin/mqnamesrv  2>&1 1>/usr/local/rocketmq/logs/start_namesvr.log &
# netstat -ntlp # jps

3.9. 启动BrokerServer A【192.168.100.24】

[root@cs11-cluster-1 rocketmq]# cat shell/start_broker-a.sh #!/bin/shnohup sh  /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties   2>&1 1>/usr/local/rocketmq/logs/start_broker-a.log &
#    netstat -ntlp#    jps#    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log#    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
3.10.启动BrokerServer B【192.168.100.25】
[root@cs11-cluster-1 rocketmq]# cat shell/start_broker-b.sh #!/bin/shnohup sh  /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties   2>&1 1>/usr/local/rocketmq/logs/start_broker-b.log &
#    netstat -ntlp#    jps#    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log#    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
数据发送 , 接受验证:
Produce: > export NAMESRV_ADDR=192.168.100.24:9876 > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer SendResult [sendStatus=SEND_OK, msgId= ...Consummer: > export NAMESRV_ADDR=192.168.100.24:9876 > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ConsumeMessageThread_%d Receive New Messages: [MessageExt...
3.11.RocketMQ Console

在tomcat中部署rocketmq-console.war

3.12. 数据清理

#    cd /usr/local/rocketmq/bin#    sh mqshutdown broker#    sh mqshutdown namesrv#    --等待停止#    rm -rf /usr/local/rocketmq/store#    mkdir /usr/local/rocketmq/store#    mkdir /usr/local/rocketmq/store/commitlog#    mkdir /usr/local/rocketmq/store/consumequeue#    mkdir /usr/local/rocketmq/store/index#    --按照上面步骤重启NameServer与BrokerServer

3.13. 异常错误

###出现如下异常:2017-10-09 22:04:59 INFO main - load /opt/rocketmq/apache-rocketmq/store/config/consumerOffset.json OK2017-10-09 22:04:59 INFO main - load /opt/rocketmq/apache-rocketmq/store/config/consumerFilter.json OK2017-10-09 22:04:59 INFO main - shutdown thread PullRequestHoldService interrupt false2017-10-09 22:04:59 INFO main - join thread PullRequestHoldService eclipse time(ms) 0 90000#可能原因:配置路径错误,或store文件中文件创建错误,注:store 创建的时候只能手工创建如下文件夹: commitlog  consumequeue  index

感谢各位的阅读,以上就是"RocketMQ的部署过程"的内容了,经过本文的学习后,相信大家对RocketMQ的部署过程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

消息 机器 文件 方式 路径 服务 配置 模式 集群 存储 消费 过程 磁盘 同步 订阅 代码 建议 情况 数据 服务器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中智农互联网科技 疫情对互联网科技公司影响 互联网科技公司发展 互联网金融公司科技 互联网科技股票 远拓互联网科技 融贸通互联网科技 互联网科技网站 佰商互联网科技有限公司 互联网之后的科技是什么 湖南诚度互联网科技有限公司 宝灵互联网科技有限公司 健康食品互联网创新科技园项目 深圳互联网科技的发展 梅州GM互联网络科技有限公司 济南小医互联网科技有限公司招聘 上海同邻互联网科技有限公司规模 抖集互联网科技技术咨询 广西科技产业互联网是什么 黑龙江互联网科技公司 科技制造互联网公司 互联网科技排名 上海致骋互联网科技 广州善班互联网科技 昭通云南众福互联网科技有限公司 洛阳昕诺飞互联网科技有限公司 皮皮虾互联网科技有限公司 互联网营销推广黑科技 福仕德教育科技互联网 株洲百竞科技的互联网营销顾问
0