RocketMQ安装-单机版-windows+centos
windows版本
-
解压压缩包rocketmq-all-4.7.1-bin-release.zip并复制到本地软件安装目录
-
环境变量添加
NAMESRV_ADDR=localhost:9876 ROCKETMQ_HOME=D:\soft\rocketmq
-
修改bin目录下的runbroker.cmd和runserver.cmd中的虚拟机内存大小为
rem runserver.cmd set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" rem runbroker.cmd set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx256m -Xmn128m"
-
conf目录下logback开头的文件中修改${user.name}为本地日志目录地址(可不修改),也可以使用变量进行修改,在logback开头的文件configuration标签下添加property标签
<property name="LOG_HOME" value="D:/temp" />
然后将logback开头的文件中${user.home}替换为$
-
启动nameserver和broker
# .\mqnamesrv.cmd # .\mqbroker.cmd -n localhost:9876 -c ../conf/broker.properties
-
运行rocketmq管理监控界面rocketmq-console(可不运行,默认端口是8080)
java -jar rocketmq-console-2.0.0.jar
CentOS版本
-
解压压缩包rocketmq-all-4.7.1-bin-release.zip并复制到本地软件安装目录
-
环境变量配置,并执行source /etc/profile
# rocketmq NAMESRV_ADDR=127.0.0.1:9876 ROCKETMQ_HOME=/home/root-dir/server/rocketmq PATH=$ROCKETMQ_HOME:$PATH export ROCKETMQ_HOME NAMESRV_ADDR PATH
-
修改bin目录下的runbroker.sh和runserver.sh中的虚拟机内存大小为
# runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m" # runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
-
conf目录下logback开头的文件中修改${user.name}为本地日志目录地址(可不修改),也可以使用变量进行修改,在logback开头的文件里面的configuration标签下添加property标签
<property name="LOG_HOME" value="/home/java" />
然后将logback开头的文件中${user.home}替换为${LOG_HOME},vim替换命令
:%s/${user.home}/${LOG_HOME}/g
-
启动服务
启动nameServer
> nohup sh mqnamesrv & > tail -f ~/logs/rocketmqlogs/namesrv.log The Name Server boot success...
启动broker
> nohup sh mqbroker -c ../conf/broker.properties & > tail -f ~/logs/rocketmqlogs/broker.log The broker[%s, 172.30.30.233:10911] boot success...
-
关闭服务
> sh mqshutdown broker The mqbroker(36695) is running... Send shutdown request to mqbroker(36695) OK > sh mqshutdown namesrv The mqnamesrv(36664) is running... Send shutdown request to mqnamesrv(36664) OK
-
异常解决
创建topic报错:java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available
解决办法:
在bin目录下的tools.sh倒数第二行的JAVA_OPT添加jdk的ext目录,修改后如下:
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:/usr/java/jdk1.8.0_251-amd64/jre/lib/ext"
附录
-
broker.properties详解,更具体配置可参考
MessageStoreConfig
类# nameServer地址,如果nameserver是多台集群的话,就用分号分割 namesrvAddr=127.0.0.1:9876 # 所属集群名字(同一主从下:Master和slave名称要一致) brokerClusterName=DefaultCluster # broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b brokerName=broker-a # broker局域网ip # brokerIP1=192.168.0.18 # 存储根路径 storePathRootDir=/home/root-dir/data/rocketmq/broker-a # commitLog存储路径,不会使用根路径,需要单独配置 storePathCommitLog=/home/root-dir/data/rocketmq/broker-a/commitlog # 消费队列存储路径,使用根路径,配置根路径了可以不配置 #storePathConsumeQueue=/home/root-dir/data/rocketmq/broker-a/consumequeue # 消息索引存储路径,使用根路径,配置根路径了可以不配置 #storePathIndex=/home/root-dir/data/rocketmq/broker-a/index # checkpoint 文件存储路径,使用根路径,配置根路径了可以不配置 #storeCheckpoint=/home/root-dir/data/rocketmq/broker-a/checkpoint # abort 文件存储路径,使用根路径,配置根路径了可以不配置 #abortFile=/home/root-dir/data/rocketmq/broker-a/abort # 0 表示 Master,>0 表示 Slave brokerId=0 # Broker 对外服务的监听端口 listenPort=10911 # 删除文件时间点,默认是凌晨4点 deleteWhen=04 # 文件保留时间,默认48小时 fileReservedTime=48 # 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=false # 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true # 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数。由于是4个broker节点,所以设置为4 #defaultTopicQueueNums=4 # commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #限制的消息大小 maxMessageSize=65536 # Commitlog每次刷盘最少页数,每页4kb flushCommitLogLeastPages=4 # ConsumeQueue每次刷盘最少页数,每页4kb flushConsumeQueueLeastPages=4 # 刷盘时间间隔(单位毫秒),此间隔时间优先级高于上面两个参数,即当时间间隔超过之后直接进行刷盘,不考虑页数问题 flushCommitLogThoroughInterval=10000 flushConsumeQueueThoroughInterval=60000 # 强制删除文件时间间隔(单位毫秒) destroyMapedFileIntervalForcibly=120000 # 定期检查Hanged文件间隔时间(单位毫秒) redeleteHangedFileInterval=120000 # 检测可用的磁盘空间大小,当磁盘被占用超过90%,消息写入会直接报错 diskMaxUsedSpaceRatio=90 # Broker 的角色: 1) ASYNC_MASTER 异步复制Master (2) SYNC_MASTER 同步双写Master (3) SLAVE。 建议:线上采用 同步复制 + 异步刷盘; brokerRole=ASYNC_MASTER # 刷盘方式 ASYNC_FLUSH 异步刷盘; SYNC_FLUSH 同步刷盘 建议:线上采用 同步复制 + 异步刷盘; flushDiskType=SYNC_FLUSH # 事务消息 checkTransactionMessageEnable=false # 发消息线程池数量 sendMessageTreadPoolNums=128 # 拉消息线程池数量 pullMessageTreadPoolNums=128