一、准备工作
github上下载安装包,为避免编译构建,可以直接下载二进制包
1、修改ip
参考 Linux环境快速搭建RocketMQ双Master模式给机器命名 修改文件 vi /etc/hosts,相互ping一下,检测是否配置有效
2、解压并创建软连接
解压到/usr/server目录下,并创建软连接ln -s alibaba-rocketmq rocketmq(需要到创建软连接的目录下创建)
3、修改日志配置文件 在创建的软连接文件夹rocketmq下创建一个logs目录 然后执行如下命令,进行日志文件的替换,sed是linux的替换命令。两台机器同样操作。
cd /usr/server/rocketmq/conf && sed -i 's#${user.home}#/user/server/rocketmq#g' *.xml4、创建存放数据的文件夹data
rm -rf /home/cxb/rocketmq/data mkdir /home/cxb/rocketmq/data mkdir /home/cxb/rocketmq/data/commitlog mkdir /home/cxb/rocketmq/data/consumequeue mkdir /home/cxb/rocketmq/data/index
5、修改服务配置文件
将配置文件broker-a.properties和broker-b.properties拷贝到本地并按如下修改,修改后覆盖两个文件
brokerName=broker-a这行,要分别配置,如果水平扩展第三台,只需创建同样的文件夹3m-noslave,然后将下面的配置文件修改为brokerName=broker-c即可。
如果是双主双从的模式,主从关系的两台机器,brokerName要一致,通过brokerId区分开来,并采用异步复制的方式和异步刷盘策略
# Licensed to the Apache Software Foundation (ASF) under one or oorterName=rocketmq-cluster brokerClusterName=rocket-dev #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master, >0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=172.23.21.222:9876;172.23.21.221:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 0点 deleteWhen=00 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/home/cxb/rocketmq/data #commitLog 存储路径 storePathCommitLog=/home/cxb/rocketmq/data/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/home/cxb/rocketmq/data/consumequeue #消息索引存储路径 storePathIndex=/home/cxb/rocketmq/data/index #checkpoint 文件存储路径 storeCheckpoint=/home/cxb/rocketmq/data/checkpoint #abort 文件存储路径 abortFile=/home/cxb/rocketmq/data/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
6、最后是启动关闭命令:
先启动NameServer,再启动Borker,关闭的时候顺序相反,先关闭Broker,再关闭Nameserver。
双主双从,启动方式相同;需要先启动两个master再启动slave
sh mqshutdown namesrv sh mqshutdown broker nohup sh mqnamesrv >/home/cxb/mqnamesrv.out 2>&1 & nohup sh mqbroker -c /usr/server/alibaba-rocketmq/conf/2m-noslave/broker-b.properties >/home/cxb/mqbroker.out 2>&1 &
我的环境:namesrvAddr=172.23.21.223:9876;172.23.21.221:9876;172.23.29.111:9876;172.23.29.112:9876
D:\ws_study\workspace_activemq\activity mq 生产者 调用接口发送消息localhost:8282/activity/producer/sendMsg D:\ws_study\workspace_spring\springmvcdemo2 消费者,登录接收消息 D:\WS\workspace_rocketmq mq管控台 网上有个war包控制台过于简陋,可以从github上下载apache/rocketmq-externals,构建一个jar包,然后通过以下命令启动
java -jar rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=10.10.13.14:9876启动后长这个样子