rocketmq部署及配置介绍

RocketMQ安装部署 注意:Broker在启动的过程中可能会存在由于堆空间初始值太大启动不起来的问题,需要调一下堆空间的初始值。 阅读详情

1. 概述

1.1  编写目的

本文介绍了RocketMq的部署步骤、运行步骤以及Afa中RocketMq接入接出的配置说明以及组件使用说明,主要应用于使用RocketMq进行消息发送以及消费的场景。

 

1.2 名词解释

术语和缩写

解释

备注

nameServer

专门为RocketMQ设计的轻量级名称服务

 

producer

消息生产者,负责生产消息,一般由业务系统负责生产休息

 

Consumer

消息消费者,负责消费消息,一般是后台系统负责异步消息

 

Broker

消息中转角色,负责存储消息,转发消息

 

Master

Broker中的主节点

 

Slave

Broker中的副节点

 

异步复制

消息写入master节点,再由master节点异步复制到slave节点

 

同步双写

消息同时写入master节点和slave节点

 

异步刷盘

Broker的一种持久化策略,消息写入pagecache后,直接返回。由异步线程直接将pagecache写入硬盘

 

同步刷盘

Broker的一种持久化策略,消息写入pagecache后,由同步线程将pagecache写入硬盘后在返回。

 

Tps

每秒发送消息个数

 

 

1.3 参考资料

 

参考文件

备注

 

 

 

 

 

 

 

 

 

 

2 安装部署

 

2.1 硬件环境

Cpu8核、内存12g、硬盘1t

 

2.2 软件环境

1.    linux系统

2.    jdk1.8或以上版本 64位

3.    Maven 3.x

 

2.3 安装部署

2.3.1 单机部署

1、 查看JAVA环境

(1)   输入命令 java  -version 

(2)   显示Jdk版本

Java(TM) SE Runtime Environment (build 1.8.0_111-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

(3)   如果jdk版本不低于1.8则继续下一步,如果低于1.8则需要安装jdk1.8或以上版本

 

2、 下载rocketmq

可通过命令wget http://mirrors.hust.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip下载

 

3、 解压rocketmq

输入命令 unzip rocketmq-all-4.2.0-bin-release.zip -d ./rocketmq

可将rocketmq解压到当前目录的rocketmq文件夹内

4、 创建存储路径

依次输入命令

 

mkdir -p /usr/local/rocketmq/store

mkdir -p /usr/local/rocketmq/store/commitlog

mkdir -p /usr/local/rocketmq/store/consumequeue

mkdir -p /usr/local/rocketmq/store/index

 

5、 配置RocketMq环境变量

RockeMq一般部署于非root用户下,vi /home/${user}/.bash_profile,添加如下内容:

 

export ROCKETMQ_HOME=~/rocketmq

export NAMESRV_ADDR=0.0.0.0:9876

 

6、 设置broker配置

(1)输入命令创建配置

vi rocketmq/conf/default-broker.properties

(2)输入内容:

namesrvAddr=ip:port;

messageIndexSafe=true

autoCreateTopicEnable=true

waitTimeMillsInSendQueue=5000

sendMessageThreadPoolNums=64

useReentrantLockWhenPutMessage=true

defaultReadQueueNums = 16

defaultWriteQueueNums = 16

brokerIP1=ip

brokerClusterName=clusterName

brokerName=brokerName

brokerId=0

deleteWhen=04

fileReservedTime=48

brokerRole=ASYNC_MASTER

flushDiskType=ASYNC_FLUSH

listenPort=port

storePathRootDir=/usr/local/rocketmq/store

storePathCommitLog= /usr/local/rocketmq/store/commitlog

storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

storePathIndex=/usr/local/rocketmq/store/index

 

注意:storePathRootDir、storePathCommitLog、storePathConsumeQueue、storePathIndex这4个路径的设置要与第4步创建的存储路径一致。

 

以上内容中部分值需要根据实际情况修改,详情如下:

参数

原始值

修改值说明

namesrvAddr

ip:port

ip设置实际ip,port可自由设置,一般设置9876

brokerIP1

ip

ip设置外网ip,不需要连接外网的话,可以在参数前面加#注释掉

listenPort

port

port可自由设置,一般设置10911

brokerName

本机主机名

Broker名称

brokerClusterName

DefaultCluster

Broker 所属哪个集群

brokerId

 

 

0

BrokerId,必须是大等于 0 的整数,0 表示Master,>0 表示 Slave,一个 Master 可以挂多个 Slave,Master 与 Slave

通过 BrokerName 来配对

brokerPermission

0x4|0x2

broker读写权限

defaultTopicQueueNums

8

默认topic读写队列数

 

autoCreateTopicEnable

 

TRUE

是否允许Broker 自动创建

Topic,建议线下开启,线上关闭

clusterTopicEnable

true

是否启用集群topic

brokerTopicEnable

true

是否启用brokertopic

 

autoCreateSubscriptionGroup

 

TRUE

是否允许Broker 自动创建订阅组,建议线下开启,线上关

sendMessageThreadPoolNums

1

发送消息线程池数量

storePathConsumeQueue

$HOME/store/consumequeue

消费队列存储路径

storePathIndex

$HOME/store/index

消息索引存储路径

storeCheckpoint

$HOME/store/checkpoint

checkpoint 文件存储路径

abortFile

$HOME/store/abort

abort 文件存储路径

fileReservedTime

48

文件保留时间,默认 48 小时

 

 

brokerRole

 

 

ASYNC_MASTER

Broker 的角色

-异步复制

Master: ASYNC_MASTER

Slave: SLAVE

-同步双写

Master: SYNC_MASTER

Slave: SLAVE

 

flushDiskType

 

ASYNC_FLUSH

刷盘方式

  • ASYNC_FLUSH 异步刷盘

-SYNC_FLUSH 同步刷盘

deleteWhen

04

删除文件时间点,默认凌晨 4

defaultReadQueueNums

16

创建Topic中默认的读队列数量

defaultWriteQueueNums

16

创建Topic中默认的写队列数量

(3)最后按esc键,输入:wq保存配置

 

7、 修改启动脚本参数

vi bin/runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

 

vi bin/runserver.sh 

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

注意:XmsXmx至少是1G  否则启动不起来  Xmn一般是前者的一半,这边设置的内存不能大于机器实际的内存,根据实际情况调整。

8、 启动NameSrv

nohup sh bin/mqnamesrv &

9、  启动broker

nohup sh mqbroker -c conf/default-broker.properties &

10、 停止broker

  其中default-broker.properties为上面第5步设置的broker配置文件名

sh mqshutdown broker

11、 停止namesrv

sh mqshutdown namesrv

12、验证

(1)启动namesrv和broker

nohup sh bin/mqnamesrv &

nohup sh mqbroker -c conf/default-broker.properties &

(2)在ROCKETMQ_HOME路径下执行以下命令模拟Producer发消息:

sh tools.sh org.apache.rocketmq.example.quickstart.Producer

(3)观察结果:会发出很多条下面的命令,说明发送成功:

(4)在ROCKETMQ_HOME路径下执行以下命令模拟Consumer发消息:

sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

(5)观察结果:会收到和上面一样多的命令,说明接收成功,可证明RocketMQ部署成功:

 

2.3.2 集群安装

 

1、 根据单实例安装步骤成功安装多个rocketmq

2、Broker的集群部署分为多Master模式、多Master多Slave模式异步复制、多Master多Slave模式同步双写

2.1多Master模式

(1)修改配置 namesrvAddr=ip1:port1;ip2:port2 多个地址之间用分号;隔开

(2)修改配置brokerClusterName=clusterName集群名字设置统一

(3)修改配置brokerName为不同名称

2.2 多Master多Slave模式异步复制(其余配置与多Master模式一致)

       一个Master对应一个Slave,Master与Slave的配置不同项为:

       Master:brokerRole= ASYNC_MASTER

       Slave:brokerRole= SLAVE

2.3 多Master多Slave模式同步双写(其余配置与多Master模式一致)

       一个Master对应一个Slave,Master与Slave的配置不同项为:

       Master:brokerRole= SYNC_MASTER

       Slave:brokerRole= SLAVE

3、 验证

(1) 启动所有rocketmq实例的namesrv和broker

(2) 在ROCKETMQ_HOME路径下执行以下查看集群信息:

sh mqadmin clusterList -n namesrvAddr

以上命令中namesrvAddr需要修改为实际的地址

(3) 观察结果:执行后会显示如下格式的信息

图片中可看出集群下的所有rocketmq单实例

 

3 目录说明

3.1 Broker目录说明store

store的文件结构如下图:

  • Rocketmq消息的存储是由ConsumeQueue和CommitLog配合完成的,消息真正的物理存储文件是CommitLog,ConsumeQueue是消息的逻辑队列,类似数据库的索引文件,存储的是指向物理存储的地址。每个topic下的每个Message Queue都有一个对应的ConsumeQueue文件。
  • CommitLog以物理文件的形式存放,每台Broker上的CommitLog被本机器所有ConsumeQueue共享。
  • config文件夹下的topics.json存储每个topic的读写队列数、权限、是否顺序等信息; consumerFilter.json存储消息的过滤的相关信息;consumerOffset.json存储每个消费者Consumer在每个topic上对于该topic的consumequeue队列的消费进度;delayOffset.json存储对于延迟主题SCHEDULE_TOPIC_XXXX的每个consumequeue队列的消费进度;subscriptionGroup.json存储每个消费者Consumer的订阅信息。
  • Index文件夹存放的是索引文件,用于加快消息查询的速度。

 

3.2 logs目录说明

RocketMq的文件存放于${user.home}/logs/rocketmqlogs,logs的文件结构如下图:

  • Namesrv.log记录着namesrv的运行日志
  • Broker.log记录这broker的运行日志
  • Store.log记录着消息存储相关的日志
  • Remoting.log记录着连接远程机器相关的日志

 

4 基本功能

4.1生产者(P端)

其中可投递消息类型分为三种:无序消息(同步、异步发送)、有序消息(仅同步发送)。其中无序消息又分为普通消息、延时消息。

4.1.1 普通消息

 无具体定制消息格式,最为普通的一种消息。

 

4.1.2 延时消息

  P端发送消息时,指定消息延时发送的级别,级别为1-18级(默认为0级,即不延时发送),对应的时间为1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 。

 

4.1.3 有序消息

 P端发送消息时,只往Topic中选定的一条队列发送消息,这样就可以保证消息有序的投递以及消费

 

注意:Rocketmq可以严格的保证消息有序,但是要保证全局顺序消息,只能消除所有的并发处理,各部分都设置成单线程处理,这时高并发、高吞吐量的功能就用不上了;但是在保证部分消息有序的情况下,同一个consumer queue的消息有序消费,不同的Consumer queue的消息可以并发处理,可以兼顾消息有序并且实现高并发高吞吐量的效果。

 

4.2消费者(C端)

必须创建Topic后,才启动C端监听Topic,其中C端的订阅模式分为集群订阅和广播订阅模式。

 

4.2.1 集群订阅

同一个 ConsumerGroup 所标识的所有 Consumer 平均分摊消费消息。例如某个 Topic 有 9 条消息,一个 ConsumerGroup 有 3 个 Consumer 实例,那么在集群消费模式下每个实例平均分摊,只消费其中的 3 条消息。

 

4.2.2 广播订阅

同一个 ConsumerGroup 所标识的所有 Consumer 都会各自消费某条消息一次。例如某个 Topic 有 9 条消息,一个 ConsumerGroup 有 3 个 Consumer 实例,那么在广播消费模式下每个实例都会各自消费 9 条消息。

 注意

(1)在广播消费模式下,无法设置消息堆积报警,也无法进行消息堆积查询。因此,您也可以创建多个 ConsumerGroup 来达到广播模式的效果。

 (2)顺序消费不支持广播订阅。

 

4.2.3 注意事项

   (1) 订阅关系一致性。同一个ConsumerGroup下订阅的 Topic 必须一致、订阅的 Topic 中的 Tag 必须一致。

 

RocketMQ调优心得总结 一、问题 线上RocketMQ 集群,使用方偶尔报错如下: (1)[REJECTREQUEST]system busy, start flow control for a while (2)[TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 206ms, size of queue: 5 二、调优历程 谷歌查找资料 在stackoverflow 上找到该问题:htt... 阅读详情

相关推荐

RocketMQ系列笔记:手把手部署与调优,拒绝“内存爆炸”

作为一只刚入门的RocketMQ小白的时候,你是否经历过以下崩溃瞬间?启动Broker时内存爆炸,直接OOM(OutOfMemory)原地升天NameServer启动后秒退,日志里写满“端口被占用”的哀嚎发消息时疯狂报错,发现Broker根本没上线别慌!这篇笔记将用保姆级教程带你从零部署RocketMQ,并解决90%的配置坑点!通过本文你已掌握:✅ RocketMQ单机部署全流程✅ 内存参数调优技巧✅ 生产级配置建议✅ 常见问题排查方法。

nihao2q的博客 1170

rocketmq部署教程

rockemq集群部署教程

迷途的汪汪 7281

手把手教你配置RocketMQ Broker:从零搭建到集群部署

本文详细解析了RocketMQ Broker的配置部署,从单机环境搭建到高可用集群部署。内容涵盖核心配置文件解析、存储与性能优化、集群架构设计及生产环境调优实战,帮助开发者深入理解Broker参数并掌握从零搭建到集群运维的全流程。

h6j7k8l9p0的博客 445

RocketMQ的broker处理消息commit时,加锁应该使用自旋锁还是重入锁

讨论的主题 以下内容基于rocketmq4.7.1版本。 rocketmq的broker端关于消息发送的配置项中,有这样2项配置: 1. 是否使用重入锁 /** * introduced since 4.0.x. Determine whether to use mutex reentrantLock when putting message.<br/> * By default it is set to false indicating using spi

程序猿的樊笼 1601

RocketMQ的Docker镜像部署(以及Dashboard的部署、ACL配置

RocketMQ的Docker镜像部署,以及Dashboard的部署、ACL配置

蒋含竹的博客 5772

RocketMQ集群部署配置

https://mp.weixin.qq.com/s?__biz=MzU2NjIzNDk5NQ==&mid=2247483770&idx=1&sn=854b4ec0982b91a6b7587c1cc71716c3&scene=21#wechat_redirect 目标,使用2台机器部署RocketMQ多Master多Slave模式,异步复制集群模式。 第一步...

qingfengxia2013的专栏 962

MQ RocketMQ安装部署配置

1 资源 资源信息 版本号 备注 Centos7 7.5 IP: 192.168.51.5 JRE 1.8 如果已安装请忽略 RocketMQ 4.8.0 JRE-1.8 下载:https://download.csdn.net/download/qq_15769939/12115544 CSDN RocketMQ下载: https://download.csdn.net/download/qq_15769939/16091337 官网 RocketMQ下载:https:

小P聊技术 544

使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解

使用docker-compose部署RocketMQ5.x 单机部署+配置参数详解、使用docker-compose部署RocketMQ

kerwin的博客 1万+

RocketMQ 阿里云部署 公网IP 配置

今天将RocketMQ部署到阿里云上的时候 发现一直抱如下错误 [2022-05-16 13:11:33.207] ERROR collectTopicThread_6 - Failed to collect topic: TopicTest data org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 172.21.67.142:10911 failed at org.apache.rocketmq.re

m0_37859502的博客 3279

Windows 本地部署 RocketMQ 全指南:配置、启动与避坑

本文详细介绍了在Windows本地部署RocketMQ的完整流程,包括环境准备、关键配置、服务启动和常见问题排查。重点讲解了JDK环境要求、内存参数调整、启动顺序以及自动创建Topic的配置技巧。文章还提供了可视化控制台的安装指南,帮助开发者更高效地管理RocketMQ。针对Windows环境下常见的内存溢出、路径错误等问题给出了具体解决方案,适合需要快速搭建本地开发环境的开发者参考。

曦煜墨白的博客 2180

linux下rocketmq部署,两主两从同步写模式配置

架构图 2、部署2.1下载Apache:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zipAlibba:https://github.com/alibaba/RocketMQ/releases2.2解压:unzip rocketmq-all-4.2.0-bin-re...

u014211122的博客 2544

【Docker】RocketMQ5.1.0的配置部署与基于SpringBoot3.0.5的代码基础配置

RocketMQ5.1.0的Docker配置部署与基于SpringBoot3.0.5的代码基础配置

CatalpaWoo的博客 4573

RocketMQ Docker部署与集群配置实战指南

分布式消息中间件是微服务架构中的重要组件,通过异步通信实现系统解耦和流量削峰。RocketMQ作为阿里开源的高性能消息队列,采用发布/订阅模式支持事务消息和顺序消息。其核心原理基于NameServer服务发现和Broker消息存储,通过Docker容器化部署可快速搭建开发测试环境,而生产环境需要配置Master-Slave集群保证高可用。在金融支付、电商秒杀等场景中,配合Docker Compose可实现快速扩缩容,显著提升部署效率。本文以RocketMQ 4.9.4为例,详细演示单机与集群部署方案,包含存

weixin_34332905的博客 312

最详细的 RocketMQ 集群部署指南,附完整脚本 + 实战配置(建议收藏)

本文详细介绍RocketMQ 4.9.7版本的部署方案,包含单机部署和集群部署两种方式。单机部署包括下载二进制包、配置nameserver和broker以及启动服务等步骤。集群部署则通过3个nameserver节点和2组主从broker节点(broker-a和broker-b各1主1从)实现高可用,详细说明了各节点的端口配置、存储路径设置和启动方式。文中提供了经过生产验证的完整脚本,强调集群部署在生产环境中的必要性,包括数据冗余、服务高可用等优势。部署完成后可通过Java客户端连接使用。

https://ophome.blog.csdn.net,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 1440

使用docker-compose/docker部署RocketMQ5.x 单机部署+配置参数详解

Broker启动脚本中有一个自动计算最大堆内存和新生代内存的函数会导致在不同硬件环境下设置最大堆内存和新生代内存环境变量不被应用,,这里先提前copy一份容器内部启动脚本做挂载,如果想自定义内存可以自己调整。1、启动容器2、复制容器内启动脚本到挂载目录/usr/local/rocketmq/nameserver/bin3、修改runbroker.sh# 打开脚本文件找到调用calculate_heap_sizes函数的位置注释掉保存即可,拉到脚本最底部就能找到4、停止&删除容器。

小匠的Blog 2485

收藏量爆表!RocketMQ Docker 集群部署全套配置与优化技巧

rm *.zip5.x 架构推荐必须加 Proxy,客户端不要直连 BrokerbrokerIP1 一定要设为宿主机真实 IP使用 Docker Compose 启动全组件最简单挂载 store + logs 目录,避免数据丢失Broker JVM 不要给太多,留内存给 PageCache监控:Dashboard + Exporter 必备出现连接失败 90% 是 brokerIP1 配错。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 657

RocketMQ单节点单副本部署模式的默认配置解读

建议在生产环境中至少部署2主2从的多副本集群,单节点模式仅适用于开发和测试环境。

学亮编程手记 806
上一篇: linux下redis安装和部署及详细配置
licusliu
博客等级 码龄11年 3粉丝 3原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值