15 Centos单机搭建Rocketmq运行环境
Posted java1234_小锋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15 Centos单机搭建Rocketmq运行环境相关的知识,希望对你有一定的参考价值。
先把rocketmq
上传到/hom/data/
目录下;
为了方便,我们统一用finalshell
工具上传;
/home/
下面再新建一个mq
目录用来存放rocketmq
安装文件;
进入data
目录,解压rocketmq压缩包到mq
目录
unzip rocketmq-all-4.9.0-bin-release.zip -d ../mq
假如unzip没安装,可以安装下
yum install -y unzip zip
为了操作方便我们把解压后的文件名改成rocketmq
,工具里右击重命名即可;
rocketmq目录下,新建logs和store两个目录;
logs
是存储rocketmq
日志的目录;
store
是存储rocketmq
数据文件的目录;
在store目录再新建commitlog
,consumequeue
,index
三个目录;
commitlog
存储RocketMQ消息信息目录;
consumequeue
、index
存储索引文件数据目录;
我们先配置单节点,修改conf
下的2m-2s-sync
配置文件;
覆盖掉broker-a.properties
配置文件内容:
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.0.110:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/home/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/mq/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
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
这里有个 刷盘方式 具体讲下:
RocketMQ提供了两种刷盘策略同步刷盘、异步刷盘
同步刷盘:在消息到达MQ后,RocketMQ需要将数据持久化,同步刷盘是指数据到达内存之后,必须刷到commitlog日志之后才算成功,然后返回producer数据已经发送成功。
异步刷盘:,同步刷盘是指数据到达内存之后,返回producer说数据已经发送成功。,然后再写入commitlog日志。
复制方式 | 优点 | 缺点 | 适应场景 |
---|---|---|---|
同步刷盘 | 保证了消息不丢失 | 吞吐率相对于异步刷盘要低 | 消息可靠性要求较高的场景 |
异步刷盘 | 系统的吞吐量提高 | 系统断电等异常时会有部分丢失 | 对应吞吐量要求较高的场景 |
进入conf目录下,替换掉所有xml中的${user.home},确保日志路径正确
执行:
sed -i 's#${user.home}#/home/mq/rocketmq#g' *.xml
路径全部替换了;
Rocketmq启动对内存要求比较高,一般至少1个G内存,否则会影响RocketMQ的性能;
默认配置内存比较高,虚拟机不方便演示,所以我们修改下bin目录下的runbroker.sh和runserver.sh文件;
runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
改成
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"
runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
改成
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
先启动nameserver(后台运行方式启动):
nohup sh mqnamesrv &
再启动broker(后台运行方式启动)
nohup sh mqbroker -c /home/mq/rocketmq/conf/2m-2s-sync/broker-a.properties &
可以用jps
查看进程:
jps
83545 Jps
65852 NamesrvStartup
83310 BrokerStartup
备注:关闭命令
先关闭broker,再关闭nameserver
sh mqshutdown broker
sh mqshutdown namesrv
我们代码测试下:
把消费端,生产端的rocketmq.name-server值改成:虚拟机IP地址:9876
启动测试OK;
以上是关于15 Centos单机搭建Rocketmq运行环境的主要内容,如果未能解决你的问题,请参考以下文章