专业的编程技术博客社区

网站首页 > 博客文章 正文

介绍新版RocketMQ v4.9.3 下载、安装、配置的完成过程

baijin 2024-11-18 08:57:20 博客文章 5 ℃ 0 评论

本文给大家分享一下在macOS 中如何安装和配置RocketMQ的详细过程。

RocketMQ 使用Java语言开发,可以在任意安装了JRE 环境(1.8或以上)的平台上运行。


欢迎关注《Apache RocketMQ 深入浅出》系列文章,架构师将循序渐进地讲解Apache RocketMQ的开发实践。

1. Apache RocketMQ 入门介绍和整体架构图


一、下载并解压RocketMQ

下载当前最新 Release 版本:


下载页面:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip


解压后,目录结构如下图所示:


其中 conf 文件夹存放的是 RocketMQ 的配置文件,提供了各种部署结构的示例配置。例如 2m-2s-async 是 2 主 2 从异步复制的配置示例;2m-noslave 是 2 主的示例配置。


二、配置环境变量

因为是在zsh shell环境中,我们修改zprofile文件:sudo vim /etc/zprofile

在 zprofile 配置文件中添加如下配置项:

# RocketMQ
export ROCKETMQ_HOME=/Users/rickie/apps/rocketmq-4.9.3
export PATH=$PATH:$ROCKETMQ_HOME/bin


保存zprofile,然后执行 source /etc/zprofile 命令,使上述配置生效。


三、配置文件

查看 ROCKET_HOME/conf目录下的broker.conf文件,文件默认内容如下所示:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH


简要说明:

brokerClusterName:集群名称

brokerName:broker 名字,注意此处不同的配置文件填写的不一样

brokerId:0 表示 Master,> 0 表示 Slave

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

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

brokerRole:broker 角色,ASYNC_MASTER 异步复制Master,SYNC_MASTER 同步双写Master,SLAVE

flushDiskType:ASYNC_FLUSH 异步刷盘,SYNC_FLUSH 同步刷盘


由于本文主要是搭建一个学习环境,故采取的部署架构为 1 主的部署架构,关于生产环境下如何搭建 RocketMQ 集群、如何调优参数等可以参考相关文章。


下面是更新后的 conf/broker.conf 配置文件:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,它的slave可以采用相同名称,eg: master叫broker-a,slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
brokerIP1=127.0.0.1
brokerIP2=127.0.0.1
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/rickie/apps/rocketmq-4.9.3/store
#commitLog 存储路径
storePathCommitLog=/Users/rickie/apps/rocketmq-4.9.3/store/commitlog

#限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
#Broker 的角色
brokerRole=ASYNC_MASTER
#刷盘方式
flushDiskType=ASYNC_FLUSH

#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageTreadPoolNums=128
#拉消息线程池数量
pullMessageTreadPoolNums=128


简要说明:RocketMQ中broker配置brokcerIP1和brokerIP2的作用

brokerIP1:当前broker监听的IP;

brokerIP2:存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。

默认不配置brokerIP1和brokerIP2时,都会根据当前网卡选择一个IP使用。当你的机器有多块网卡时,很有可能会有问题。比如,我遇到的问题是机器上有两个IP,一个公网IP,一个私网IP,结果默认选择的走公网IP,这是不正确的,我期望的是所有业务内部通信都走内网。


此时,需要执行如下命令创建RocketMQ的配置目录,如下所示:

# ~ % cd $ROCKETMQ_HOME
# rocketmq-4.9.3 % pwd
/Users/rickie/apps/rocketmq-4.9.3
# rocketmq-4.9.3 % mkdir store
# rocketmq-4.9.3 % cd store
# store % mkdir commitlog



四、修改 broker jvm 和 nameserver jvm参数

这里修改 JVM 参数主要目的是个人学习电脑内存不够,默认 nameserver 会占用 4G,broker 会占用 8G。


(1)broker jvm

修改 bin/runbroker.sh 文件中的 jvm 参数,如下所示:

修改前配置如下:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"

修改后配置如下:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"


(2)nameserver jvm

如下是修改前后的配置:

#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"


下一篇文件将介绍RocketMQ 的启动,以及验证RocketMQ 是否启动成功。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表