RocketMQ Broker 的配置项

摘要

  • 本文介绍 RocketMQ Broker 的配置项。

  • RocketMQ官网

  • 本文使用的 RocketMQ 版本为 5.3.2。

查看 Broker 配置项

  • 查看全部默认配置项

1
2
3
4
# 查看全部默认配置项
sh bin/mqbroker -p
# 查看加载了指定配置文件后的全部配置项
sh bin/mqbroker -p -c conf/broker.conf
  • 查看重要的配置项

1
2
3
4
# 查看重要的默认配置项
sh bin/mqbroker -m
# 查看加载了指定配置文件后的重要配置项
sh bin/mqbroker -m -c conf/broker.conf

配置项项目源码简介

  • 在源码 rocketmq-all-5.3.2-source-release/broker 的启动类 org.apache.rocketmq.broker.BrokerStartup中 可以看到其启动时会初始化如下配置项的类

1
2
3
4
5
6
7
final BrokerConfig brokerConfig = new BrokerConfig();
final NettyServerConfig nettyServerConfig = new NettyServerConfig();
final NettyClientConfig nettyClientConfig = new NettyClientConfig();
final MessageStoreConfig messageStoreConfig = new MessageStoreConfig();
final AuthConfig authConfig = new AuthConfig();
nettyServerConfig.setListenPort(10911);
messageStoreConfig.setHaListenPort(0);

配置项说明

  • Broker的全部配置项非常多,这里仅列出了重要的配置项。

分类 参数名 默认值 参数说明 优化 / 建议
基础配置 namesrvAddr (空) NameServer 地址列表(多个用 ; 分隔) 必须设置,否则 broker 无法注册到 nameserver。例:namesrvAddr=10.250.0.10:9876;10.250.0.11:9876
listenPort 6888 Broker 监听客户端连接的端口 ✅ 建议保持默认或显式设置为 10911(经典端口)
brokerIP1 10.250.0.188 Broker 对外通信 IP ✅ 在多网卡环境务必指定公网/内网 IP
recoverConcurrently false 是否并发恢复 CommitLog 默认即可(高安全性)
Topic & 订阅 autoCreateTopicEnable true 是否允许自动创建 Topic ✅ 生产建议设为 false,防止误创建
autoCreateSubscriptionGroup true 是否自动创建订阅组 ✅ 同上,建议 false
msgTraceTopicName RMQ_SYS_TRACE_TOPIC 消息轨迹主题名 默认即可
traceTopicEnable false 是否开启消息轨迹功能 ✅ 建议设为 true 以便问题排查
事务消息 rejectTransactionMessage false 是否拒绝事务消息 若不使用事务可设为 true 减少负担
transactionTimeOut 6000 事务超时时间(ms) 默认即可
transactionCheckMax 15 事务最大回查次数 可调高(20)提高可靠性
transactionCheckInterval 30000 事务回查间隔(ms) 默认即可
访问控制 aclEnable false 是否启用 ACL 权限验证 ✅ 生产环境 必须 true
存储路径 storePathRootDir /root/store 消息存储根目录 ✅ 改为 /data/rocketmq/store
storePathCommitLog (空) CommitLog 存储路径 若为空则使用上面的根目录
storePathDLedgerCommitLog (空) DLedger 模式存储路径 DLedger 模式才需要
storePathEpochFile (空) epoch 文件路径 Controller 模式使用
storePathBrokerIdentity (空) Broker 身份文件路径 默认即可
disappearTimeAfterStart -1 Broker 启动后失效等待时间 默认即可
storeType default 存储类型(default / dledger) ✅ 多副本部署建议 dledger
刷盘与写入 flushIntervalCommitLog 500 异步 flush 周期(ms) 默认即可
commitIntervalCommitLog 200 commit 间隔 默认即可
flushCommitLogTimed true 是否定时 flush 默认即可
文件清理 deleteWhen 04 删除过期文件时间点 每天凌晨 4 点
fileReservedTime 72 文件保留时间(小时) ✅ 可改为 48 减少磁盘压力
deleteFileBatchMax 10 删除文件批量数 默认即可
消息访问性能 maxTransferBytesOnMessageInMemory 262144 内存消息读取最大字节 默认即可
maxTransferCountOnMessageInMemory 32 内存消息读取最大条数 默认即可
maxTransferBytesOnMessageInDisk 65536 磁盘消息读取最大字节 默认即可
maxTransferCountOnMessageInDisk 8 磁盘消息读取最大条数 默认即可
accessMessageInMemoryMaxRatio 40 内存访问比例阈值 默认即可
索引管理 messageIndexEnable true 是否启用消息索引 ✅ 建议开启(提高按 key 查询性能)
messageIndexSafe false 是否安全模式索引 若磁盘可靠性差可设为 true
主从复制 haMasterAddress (空) Master 地址(Slave 模式使用) 仅从节点配置
brokerRole ASYNC_MASTER Broker 角色(ASYNC_MASTER / SYNC_MASTER / SLAVE) ✅ 主节点建议 SYNC_MASTER 提高可靠性
flushDiskType ASYNC_FLUSH 刷盘策略(SYNC_FLUSH / ASYNC_FLUSH) ✅ 高可靠建议 SYNC_FLUSH
cleanFileForciblyEnable true 是否强制清理文件 默认即可
transientStorePoolEnable false 是否启用 transient pool(堆外内存) ✅ 可设为 true 提升性能(需足够内存)
dispatchFromSenderThread false 是否由发送线程分发 默认即可
wakeCommitWhenPutMessage true 是否在消息写入时唤醒 commit 默认即可
wakeFlushWhenPutMessage false 是否写入后立即 flush ✅ 对延迟敏感业务可设为 true
消费进度清理 enableCleanExpiredOffset false 是否启用 offset 清理 默认 false
副本参数 totalReplicas 1 副本总数 ✅ 多节点建议设为 3
inSyncReplicas 1 同步副本数 默认即可
minInSyncReplicas 1 最小同步副本 ✅ 建议设为 2 提高可靠性
allAckInSyncStateSet false 是否要求所有 ISR 确认 默认即可
enableAutoInSyncReplicas false 是否自动管理 ISR 可保持默认
HA 与流控 haFlowControlEnable false 是否开启主从流控 ✅ 多副本建议 true
  • 推荐重点优化的关键项

类别 参数 推荐值 原因
注册 namesrvAddr 必填 Broker 必须向 NameServer 注册
安全 aclEnable true 启用访问控制
自动创建 autoCreateTopicEnable false 防止误创建 topic
自动订阅 autoCreateSubscriptionGroup false 防止误消费
刷盘策略 flushDiskType SYNC_FLUSH 保证可靠性
主从 brokerRole SYNC_MASTER(主) / SLAVE(从) 提升可用性
存储路径 storePathRootDir /data/rocketmq/store 避免 /root 权限问题
延迟优化 transientStorePoolEnable true 堆外内存加速写入
清理 fileReservedTime 48 减少磁盘占用
消息轨迹 traceTopicEnable true 便于追踪消息链路