RocketMQ 环境搭建
一. 开发环境
- 操作系统:CentOS7
- JDK1.8
二. 安装JDK
-
下载jdk-8u181-linux-x64.tar.gz包到/usr/local下
-
解压
tar -zxvf jdk-8u181-linux-x64.tar.gz
-
重命名
mv jdk1.8.0_181/ ./jdk1.8
-
配置Java环境变量
修改配置文件/etc/profile
vi /etc/profile
在文件末尾增加Java环境变量配置
export JAVA_HOME=/usr/local/jdk1.8 export PATH=$PATH:$JAVA_HOME/bin
保存退出,使修改生效
source /etc/profile
-
输入java -version命令,如果出现以下提示,则表示JDK安装配置成功
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
三. RocketMQ源码下载与编译
-
源码包zip格式下载地址:http://rocketmq.apache.org/docs/quick-start/
或者也可以通过Github下载源码:https://github.com/apache/rocketmq
-
使用IDEA导入项目,并使用Maven编译
mvn -Prelease-all -DskipTests clean install -U
-
生成的jar包在rocketmq-distribution模块下,名称为apache-rocketmq.tar.gz
-
将apache-rocketmq.tar.gz拷贝到Linux的/usr/local路径下
四. RocketMQ的单节点部署
-
在/etc/hosts配置中添加RocketMQ节点信息
192.168.31.197 rmq-namesrv01 192.168.31.197 rmq-master01
由于是单节点部署,所以在同一台机器上同时部署NameServer和Broker
-
创建目录,将文件解压到指定目录下
mkdir rocketmq tar -zxvf apache-rocketmq.tar.gz -C ./rocketmq/
-
创建RocketMQ的存储路径,RocketMQ将所有数据都记录在磁盘的该路径下
mkdir /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store/index
-
修改配置文件,这里以2m-2s-async 为例
vi /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
将配置文件修改如下:
#所属集群名字 brokerClusterName=cluster-01 #broker 名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer 地址,分号分割 namesrvAddr=192.168.31.197:9876 #broker地址 brokerIP1=192.168.31.197 #在发送消息时,自动创建服务器不存在的 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=/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 #- SLAVE brokerRole=ASYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128
配置的具体含义会在后面的文章中详细介绍。
-
修改日志配置
mkdir /usr/local/rocketmq/logs cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
RocketMQ在启动时,默认会分配8G的堆内存,我们在日常开发情况下可以根据需要修改JVM参数。
-
修改NameServer启动脚本
vi /usr/local/rocketmq/bin/runserver.sh
将JVM参数改为如下设置
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
-
修改Broker启动脚本
vi /usr/local/rocketmq/bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
-
启动应用
先启动NameServer
cd /usr/local/rocketmq/bin/ nohup sh mqnamesrv &
再启动Broker,此时需要制定配置文件路径
cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties &
五. RocketMQ控制台监控
-
从Github上下载rocketmq-externals工程源码:https://github.com/apache/rocketmq-externals
-
打开rocketmq-console工程,修改application.properties文件,指定NameServer地址:
server.contextPath= server.port=8080 #spring.application.index=true spring.application.name=rocketmq-console spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true logging.config=classpath:logback.xml #if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876 rocketmq.config.namesrvAddr=192.168.31.197:9876 #if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true rocketmq.config.isVIPChannel= #rocketmq-console's data path:dashboard/monitor rocketmq.config.dataPath=/tmp/rocketmq-console/data #set it false if you don't want use dashboard.default true rocketmq.config.enableDashBoardCollect=true
-
启动SpringBoot项目,访问http://192.168.31.197:8080,就可以看到RocketMQ的控制台界面。