RocketMQ安装-单机版-windows+centos

windows版本

  1. 解压压缩包rocketmq-all-4.7.1-bin-release.zip并复制到本地软件安装目录

  2. 环境变量添加

    NAMESRV_ADDR=localhost:9876
    ROCKETMQ_HOME=D:soft
    ocketmq
    
  3. 修改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"
    
  4. conf目录下logback开头的文件中修改${user.name}为本地日志目录地址(可不修改),也可以使用变量进行修改,在logback开头的文件configuration标签下添加property标签

    <property name="LOG_HOME" value="D:/temp" />
    

    然后将logback开头的文件中${user.home}替换为${LOG_HOME}

  5. 启动nameserver和broker

    # .mqnamesrv.cmd
    # .mqbroker.cmd -n localhost:9876 -c ../conf/broker.properties
    
  6. 运行rocketmq管理监控界面rocketmq-console(可不运行,默认端口是8080)

    java -jar rocketmq-console-2.0.0.jar
    

CentOS版本

  1. 解压压缩包rocketmq-all-4.7.1-bin-release.zip并复制到本地软件安装目录

  2. 环境变量配置,并执行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
    
  3. 修改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"
    
  4. 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

  5. 启动服务

    启动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...
    
  6. 关闭服务

    > 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
    
  7. 异常解决

    创建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"
    

附录

  1. 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
    
    
    
原文地址:https://www.cnblogs.com/ucfjepl/p/13840004.html