RocketMQ Broker 的配置项
摘要
-
本文介绍 RocketMQ Broker 的配置项。
-
本文使用的 RocketMQ 版本为 5.3.2。
查看 Broker 配置项
-
查看全部默认配置项
1 | # 查看全部默认配置项 |
-
查看重要的配置项
1 | # 查看重要的默认配置项 |
配置项项目源码简介
-
在源码
rocketmq-all-5.3.2-source-release/broker的启动类org.apache.rocketmq.broker.BrokerStartup中 可以看到其启动时会初始化如下配置项的类
1 | final BrokerConfig brokerConfig = new BrokerConfig(); |
配置项说明
-
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 | 便于追踪消息链路 |