RocketMQ配置全解

  • NAME SERVER
  • 配置
  • 启动
  • BROKER SERVER
  • 配置
  • ACL配置(`aclEnable=true`时配置)
  • plain_acl.yml
  • tools.yml
  • 启动
  • RocketMQ Dashboard
  • 下载源码
  • 调整配置
  • users.properties
  • 打包
  • 启动
  • 访问


基本覆盖常用配置,如有需要继续补充

RocketMQ主要有NAME SERVERBROKER SERVER,更详细参考官方架构介绍

NAME SERVER

配置

一般就是改个端口,在rocket目录下conf目录中创建文件nameserver.conf内容如下

listenPort=端口号

启动

启动时,指定配置文件

.\bin\mqnamesrv.cmd -c .\conf\nameserver.conf

BROKER SERVER

配置

在rocket目录下conf目录中broker.conf配置,支持的配置项如下,如果要使用身份鉴权aclEnable=true必须配置,如需开放防火墙端口,注意如下端口配置

# 所属集群名字
brokerClusterName = MQ_Cluster
# broker名字,注意此处不同的配置文件填写的不一样
brokerName = broker-a
# 0 表示 Master,>0 表示 Slave
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

# 当前broker监听的IP地址 多网卡的时候需要
brokerIP1=127.0.0.1
# Broker 对外服务的监听端口
listenPort=10911
#主要用于slave同步master 默认listenPort - 2
fastListenPort=10909
#haService中使用 默认listenPort + 1
haListenPort=10912
# 鉴权
aclEnable=true

# nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 删除文件时间点,默认凌晨 4点
deleteWhen=03
# 文件保留时间,默认 48 小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/rocketmq/store
# commitLog 存储路径
storePathCommitLog=/rocketmq/store/commitlog
# 消费队列存储路径存储路径
storePathConsumeQueue=/rocketmq/store/consumequeue
# 消息索引存储路径
storePathIndex=/rocketmq/store/index
# checkpoint 文件存储路径
storeCheckpoint=/rocketmq/store/checkpoint
# abort 文件存储路径
abortFile=/rocketmq/store/abort
# 限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
# Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
# 发消息线程池数量
#sendMessageThreadPoolNums=128
# 拉消息线程池数量
#pullMessageThreadPoolNums=128

ACL配置(aclEnable=true时配置)

aclEnable=true时配置

plain_acl.yml

plain_acl.yml这个配置文件是动态生效的,修改后会被MQ动态加载,即时生效,注意修改

globalWhiteRemoteAddresses:

accounts:
- accessKey: RocketMQ
  secretKey: 12345678
  whiteRemoteAddress:
  admin: false
  defaultTopicPerm: DENY
  defaultGroupPerm: SUB
  topicPerms:
  - TopicTest=PUB
  groupPerms:
  # the group should convert to retry topic
  - oms_consumer_group=DENY

- accessKey: admin
  secretKey: 12345678
  whiteRemoteAddress:
  # if it is admin, it could access all resources
  admin: true
  # RocketMQ有个bug,admin默认权限不对,所以下面默认给发布和订阅权限
  defaultTopicPerm: PUB|SUB
  defaultGroupPerm: PUB|SUB

上面的配置示例,结果为:

  • PUB是发布权限,SUB是订阅权限、也就是消费权限,按需配置,可以分发布用户和订阅用户,也可以一个用户拥有PUB|SUB权限
  • 用户RocketMQ普通用户,分配的权限为只能发送TopicTest的消息,其他topic无权限发送;拒绝oms_consumer_group消费组的消息消费,其他消费组默认可消费。
  • 用户admin是管理员用户,权限最大

tools.yml

accessKey: 普通用户accessKey
secretKey: 普通用户secretKey

启动

启动时,指定配置文件

.\bin\mqbroker.cmd -c .\conf\broker.conf

RocketMQ Dashboard

下载源码

https://github.com/apache/rocketmq-dashboard.git

调整配置

调整配置文件src/main/resources/application.yml中的配置,如果开启了ACL,注意配置accessKeysecretKey,建议配置admin的账户,不然有些功能没有权限使用,然后loginRequired设置为true,编辑src/main/resources/users.propertiesDashboard用户信息,users.properties配置说明见下文

server:
  port: 9866 # Dashboard端口号
  servlet:
    encoding:
      charset: UTF-8
      enabled: true
      force: true
## SSL setting
#  ssl:
#    key-store: classpath:rmqcngkeystore.jks
#    key-store-password: 11
#    key-store-type: PKCS12
#    key-alias: rmqcngkey

……

rocketmq:
  config:
    # if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, default localhost:9876
    # configure multiple namesrv addresses to manage multiple different clusters
    # RocketMQ服务列表
    namesrvAddrs: 
      - 127.0.0.1:9876
      #- 127.0.0.2:9898
    # if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
    isVIPChannel: true
    # timeout for mqadminExt, default 5000ms
    timeoutMillis:
    # rocketmq-console's data path:dashboard/monitor
    dataPath: /rocketmq-console/data
    # set it false if you don't want use dashboard.default true
    enableDashBoardCollect: true
    # set the message track trace topic if you don't want use the default one
    msgTrackTopicName:
    ticketKey: ticket
    # must create userInfo file: ${rocketmq.config.dataPath}/users.properties if the login is required
    loginRequired: false # 安全起见 建议设置为true并配置用户信息
    useTLS: false
    # set the accessKey and secretKey if you used acl
    accessKey: "用户accessKey" # if version > 4.4.0
    secretKey: "用户secretKey" # if version > 4.4.0
    ……

users.properties

# username=password[,N]
# N 可选参数, 0 (普通用户); 1 (Admin) 使用的时候直接英文逗号加数字,没有括号,下面例子

# Define Admin
admin=密码,1

# Define Users
user1=user1,0

打包

mvn clean package -DskipTests=true

启动

java -jar .\target\rocketmq-dashboard-1.0.1-SNAPSHOT.jar

访问

  • 根据自己配置的Dashboard端口号访问
    127.0.0.1:9866

springboot RocketMQ 配置ssl rocketmq配置详解_rocketmq