RocketMQ Controller 的配置项

摘要

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

  • RocketMQ官网

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

查看 Controller 配置项

  • 查看全部默认配置项

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

配置项项目源码简介

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

1
2
3
4
5
6
final ControllerConfig controllerConfig = new ControllerConfig();
final JraftConfig jraftConfig = new JraftConfig();
controllerConfig.setJraftConfig(jraftConfig);
final NettyServerConfig nettyServerConfig = new NettyServerConfig();
final NettyClientConfig nettyClientConfig = new NettyClientConfig();
nettyServerConfig.setListenPort(19876);

配置项说明

  • Controller 配置参数说明与优化建议

分类 参数名 默认值 说明 优化 / 建议
基础信息 rocketmqHome /usr/local/soft/rocketmq/rocketmq5 RocketMQ 根路径 保持默认即可
configStorePath /root/controller/controller.properties Controller 配置文件路径 ✅ 改为 /data/rocketmq/controller/controller.properties,避免使用 /root
controllerType DLedger Controller 类型(DLedger / STANDALONE) ✅ 建议使用 DLedger(高可用)
controllerStorePath (空) Controller 元数据存储路径 ✅ 建议 /data/rocketmq/controller/store
DLedger 选举配置 controllerDLegerGroup (空) Controller 集群组名 ✅ 必填,例如:controllerGroup01
controllerDLegerPeers (空) 集群节点列表,格式:n0-10.0.0.1:19876;n1-10.0.0.2:19876;n2-10.0.0.3:19876 ✅ 必填(3 节点推荐)
controllerDLegerSelfId (空) 当前节点 ID,如 n0 ✅ 必填
mappedFileSize 1073741824 DLedger 存储文件大小 (1GB) 可保持默认
electMasterMaxRetryCount 3 Master 选举最大重试次数 默认即可
enableElectUncleanMaster false 是否允许选举非同步 Master ✅ 建议保持 false(避免数据丢失)
Broker 管理 scanNotActiveBrokerInterval 5000 扫描不活跃 Broker 的间隔(ms) 默认即可
scanInactiveMasterInterval 5000 检测失活 Master 间隔(ms) 默认即可
notifyBrokerRoleChanged true 是否通知 Broker 角色变更 ✅ 建议开启(保持同步)
isProcessReadEvent false 是否处理读事件 默认即可
线程与性能 controllerThreadPoolNums 16 控制线程池大小 可调至 8–32 视规模而定
controllerRequestThreadPoolQueueCapacity 50000 控制线程池队列容量 默认即可
Metrics 监控 metricsExporterType DISABLE 指标输出方式(DISABLE / PROM / GRPC / LOG) ✅ 建议设为 PROM
metricsPromExporterPort 5557 Prometheus 端口 ✅ 若启用监控,可用默认 5557
metricsPromExporterHost (空) Prometheus 绑定主机 默认即可
metricLoggingExporterIntervalInMills 10000 日志输出指标间隔 可调整
metricsGrpcExporterTarget (空) gRPC 监控目标 可忽略
metricsInDelta false 是否以增量输出指标 默认即可
JRaft 配置(底层一致性协议) jRaftGroupId jRaft-Controller Raft 组名 默认即可
jRaftServerId localhost:9880 当前节点 ID ✅ 修改为实际 IP,例如 10.0.0.1:9880
jRaftInitConf localhost:9880,localhost:9881,localhost:9882 集群配置 ✅ 修改为实际节点 IP
jRaftControllerRPCAddr localhost:9770,localhost:9771,localhost:9772 Controller RPC 地址 ✅ 修改为实际节点 IP
jRaftElectionTimeoutMs 1000 选举超时(ms) 默认即可(过低可能频繁选举)
jRaftScanWaitTimeoutMs 1000 扫描等待超时 默认即可
jRaftSnapshotIntervalSecs 3600 快照间隔时间(秒) ✅ 可设为 600(10分钟)加快日志压缩
网络配置 bindAddress 0.0.0.0 绑定监听地址 默认即可
listenPort 19876 Controller 服务端口 ✅ 确保未冲突
serverWorkerThreads 8 Netty 工作线程 默认即可
serverSelectorThreads 3 Selector 线程数 默认即可
serverSocketBacklog 1024 Socket backlog 队列 默认即可
useEpollNativeSelector false 是否使用 Epoll ✅ Linux 环境建议 true
enableShutdownGracefully false 优雅停机 ✅ 建议 true
客户端通信 clientWorkerThreads 4 客户端工作线程 默认即可
clientAsyncSemaphoreValue 65535 异步请求信号量 默认即可
clientCloseSocketIfTimeout true 连接超时关闭 默认即可
connectTimeoutMillis 3000 连接超时 默认即可
useTLS false 是否启用 TLS ✅ 若生产环境有安全要求,建议启用
其他 configBlackList configBlackList;configStorePath 配置黑名单项 默认即可
maxReconnectIntervalTimeSeconds 60 最大重连间隔 默认即可
enableReconnectForGoAway true 是否为 GOAWAY 连接启用重连 默认即可
  • 推荐重点优化的关键项

项目 推荐值 说明
controllerType DLedger 高可用模式
controllerDLegerGroup controllerGroup01 集群分组名
controllerDLegerPeers n0-10.0.0.1:19876;n1-10.0.0.2:19876;n2-10.0.0.3:19876 三节点推荐
controllerDLegerSelfId n0 / n1 / n2 对应节点 ID
enableElectUncleanMaster false 防止脏主选举
notifyBrokerRoleChanged true 保持集群一致性
metricsExporterType PROM 便于 Prometheus 监控
metricsPromExporterPort 5557 默认即可
useEpollNativeSelector true Linux 性能优化
enableShutdownGracefully true 优雅停机
controllerStorePath /data/rocketmq/controller/store 避免使用 /root
jRaftSnapshotIntervalSecs 600 提高快照频率