RocketMQ 环境搭建

时间:2022-07-24
本文章向大家介绍RocketMQ 环境搭建,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

RocketMQ 环境搭建

一. 开发环境

  1. 操作系统:CentOS7
  2. JDK1.8

二. 安装JDK

  1. 下载jdk-8u181-linux-x64.tar.gz包到/usr/local下
  2. 解压

 tar -zxvf jdk-8u181-linux-x64.tar.gz
 
  1. 重命名

 mv jdk1.8.0_181/ ./jdk1.8
 
  1. 配置Java环境变量 修改配置文件
/etc/profile vi /etc/profile  
  1. 在文件末尾增加Java环境变量配置
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
  1. 保存退出,使修改生效
source /etc/profile
  1. 输入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源码下载与编译

  1. 源码包zip格式下载地址:http://rocketmq.apache.org/docs/quick-start/ 或者也可以通过Github下载源码:https://github.com/apache/rocketmq
  2. 使用IDEA导入项目,并使用Maven编译

 mvn -Prelease-all -DskipTests clean install -U
 
  1. 生成的jar包在rocketmq-distribution模块下,名称为apache-rocketmq.tar.gz
  2. 将apache-rocketmq.tar.gz拷贝到Linux的/usr/local路径下

四. RocketMQ的单节点部署

  1. 在/etc/hosts配置中添加RocketMQ节点信息
192.168.31.197 rmq-namesrv01
192.168.31.197 rmq-master01
  1. 由于是单节点部署,所以在同一台机器上同时部署NameServer和Broker
  2. 创建目录,将文件解压到指定目录下
mkdir rocketmq
tar -zxvf apache-rocketmq.tar.gz -C ./rocketmq/
  1. 创建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
  1. 修改配置文件,这里以2m-2s-async 为例
vi /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
  1. 将配置文件修改如下:
#所属集群名字
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
  1. 配置的具体含义会在后面的文章中详细介绍。
  2. 修改日志配置
mkdir /usr/local/rocketmq/logs
cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
  1. RocketMQ在启动时,默认会分配8G的堆内存,我们在日常开发情况下可以根据需要修改JVM参数。
  2. 修改NameServer启动脚本

 vi /usr/local/rocketmq/bin/runserver.sh
  1. 将JVM参数改为如下设置

 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
 
  1. 修改Broker启动脚本

 vi /usr/local/rocketmq/bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
 
  1. 启动应用 先启动NameServer

 cd /usr/local/rocketmq/bin/ nohup sh mqnamesrv &
 
  1. 再启动Broker,此时需要制定配置文件路径

 cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties &
 

五. RocketMQ控制台监控

  1. 从Github上下载rocketmq-externals工程源码:https://github.com/apache/rocketmq-externals
  2. 打开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
  1. 启动SpringBoot项目,访问http://192.168.31.197:8080,就可以看到RocketMQ的控制台界面。