一、官网地址: http://rocketmq.apache.org/docs/

下载rocketmq rocketmq-all-4.4.0-bin-release.zip

二、安装部署

主机                  角色                                       模式

172.16.1.1         nameserver,broker               broker主、broker从

172.16.1.2         nameserver,broker               broker主、broker从



生产需要扩容防止单点故障

    1.部署配置

       RocketMQ的消息是存储到磁盘上的,这样既能保证断电后恢复,又可以让存储的消息量超出内存的限制。

       RocketMQ为了提高性能,会尽可能地保证磁盘的顺序写。消息在通过Producer写入RocketMQ的时候,有两种

       写磁盘方式

       异步刷盘方式:在返回写成功状态时,消息可能只是被写入了内存的PAGECACHE,写操作的返回快,

       吞吐量大;当内存里的消息量积累到一定程度时,统一触发写磁盘操作,快速写入

       同步刷盘方式:在返回写成功状态时,消息已经被写入磁盘。具体流程是,消息写入内存的PAGECACHE后,立刻

       通知刷盘线程刷盘,然后等待刷盘完成,刷盘线程执行完成后唤醒等待的线程,返回消息写成功的状态。


      同步复制,异步复制

      如果一个broker组有Master和Slave,消息需要从Master复制到Slave上,有同步和异步两种复制方式。

      同步复制: Master和Slave均写成功后才反馈给客户端写成功状态

      异步复制: 只要Master写成功即可反馈给客户端写成功状态

2.安装步骤

      172.16.1.1上broker master操作

       mkdir /data/rocketMQ-2m2s/store

       mkdir /data/rocketMQ-2m2s/store/{commitlog,consumequeue,index}

       unzip rocketmq-all-4.4.0-bin-release.zip

       mv rocketmq-all-4.4.0-bin-release  /usr/local/rocketmq

       vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties # 修改参数(登录主机查看参数)

        # 集群名字

        brokerClusterName=KaishuCluster

        brokerName=broker-a (跟从这里一样,跟其他主这里不能一样)

        # 0 表示 Master,>0 表示 Slave

        brokerId=0

        #nameServer地址,分号分割

        namesrvAddr=172.17.5.42:9876;172.17.5.45:9876

        #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

        defaultTopicQueueNums=300

        #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

        autoCreateTopicEnable=false

        #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

        autoCreateSubscriptionGroup=false

        #Broker 对外服务的监听端口

        listenPort=10911

        haListenPort=10912

        # 删除过期文件时间点,默认凌晨4点

        deleteWhen=04

        fileReservedTime=48

        #commitLog每个文件的大小默认1G

        mapedFileSizeCommitLog=1073741824

        #ConsumeQueue每个文件默认存30W条,根据业务情况调整

        mapedFileSizeConsumeQueue=300000

        #检测物理文件磁盘空间,commitlog目录所在分区的最大使用比例,如果commitlog目录所在的分区使用比例大于该值,则触发过期文件删除

        diskMaxUsedSpaceRatio=88

        #broker存储目录

        storePathRootDir=/data/rocketMQ-2m2s/store

        #commitLog 存储路径

        storePathCommitLog=/data/rocketMQ-2m2s/store/commitlog

        #限制的消息大小

        maxMessageSize=65536

        #Broker 的角色

        #- ASYNC_MASTER 异步复制Master

        #- SYNC_MASTER 同步双写Master

        #- SLAVE

        brokerRole=SYNC_MASTER

        #刷盘方式

        #- ASYNC_FLUSH 异步刷盘

        #- SYNC_FLUSH 同步刷盘

        flushDiskType=ASYNC_FLUSH

        #发消息线程池数量

        sendMessageThreadPoolNums=128

        #拉消息线程池数量

        pullMessageThreadPoolNums=128

        #打开锁

        useReentrantLockWhenPutMessage=true

        waitTimeMillsInSendQueue=3000


       vim /usr/local/rocketmq/conf/logback_namesrv.xml 修改nameserver数据保存地址(登录主机查看配置)

       

       172.16.1.2上broker master操作

       mkdir /data/rocketMQ-2m2s/store

       mkdir /data/rocketMQ-2m2s/store/{commitlog,consumequeue,index}

       unzip rocketmq-all-4.4.0-bin-release.zip

       mv rocketmq-all-4.4.0-bin-release  /usr/local/rocketmq

       vim /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties # 修改参数(登录主机查看参数)

       vim /usr/local/rocketmq/conf/logback_namesrv.xml 修改nameserver数据保存地址(登录主机查看配置)

       

       172.16.1.1上broker slave操作

       mkdir /data/rocketMQ-2m2s/store-s

       mkdir /data/rocketMQ-2m2s/store-s/{commitlog,consumequeue,index}

       vim /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties # 修改参数(登录主机查看参数)

            

       172.16.1.2上broker slave操作

       mkdir /data/rocketMQ-2m2s/store-s

       mkdir /data/rocketMQ-2m2s/store-s/{commitlog,consumequeue,index}

       vim /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties # 修改参数(登录主机查看参数)


  3.启动停止服务

        启动两台机器的nameserver服务

        cd /usr/local/rocketmq/bin

        nohup sh mqnamesrv &


        两台机器启动broker 主从

        172.16.1.1启动主

        nohup sh mqbroker -c ../conf/2m-2s-async/broker-a.properties &

        172.16.1.2启动主

        nohup sh mqbroker -c ../conf/2m-2s-async/broker-b.properties &


        172.16.1.1启动从

        nohup sh mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &

        172.16.1.2启动从

         nohup sh mqbroker -c ../conf/2m-2s-async/broker-a-s.properties &    

   

三、rocketmq监控

       下载https://github.com/apache/rocketmq-externals

        解压unzip rocketmq-externals-master

         cd rocketmq-externals-master/rocketmq-console/src/main/resources

         vim application.properties

         rocketmq.config.nameservAddr=172.16.1.1:9876,172.16.1.2:9876 #修改

         rocketmq.config.dataPath=/data/rocketMQ-2m2s # 修改

         rocketmq.config.loginRequired=true # 设置登录权限

         vim users.properties # 设置登录账号

         vim pom.xml # 根据安装版本不同修改版本号

         mvn clean package -Dmaven.test.skip=true

         启动:nohup java -jar rocketmq-console-ng-1.0.1.jar --server.port=8080 --rocketmq.config.namesrvAddr=172.16.1.1:9876 &  # --rocketmq.config.namesrvAddr必须加上该参数,否则会报错

         登录http://172.16.1.1:8080

四、命令使用

创建topic

 sh mqadmin updateTopic -n 172.17.5.42:9876 -b 172.17.5.42:10911 -c 集群名 -t app01

sh mqadmin topicList -n 172.17.5.42:9876 查看所有topic

sh mqadmin  clusterList -n 172.17.5.45:9876 查看集群消息