RocketMQ Proxy 的配置项
摘要
-
本文介绍 RocketMQ Proxy 的配置项。
-
本文使用的 RocketMQ 版本为 5.3.2。
配置项项目源码简介
-
当前版本尚不支持通过命令行查看 Proxy 的配置项,但是在启动Proxy的日志中可以看到当前生效的配置项。
-
另外在源码
rocketmq-all-5.3.2-source-release/proxy的启动类org.apache.rocketmq.proxy.ProxyStartup中 可以看到其启动时会初始化如下配置项的类
1 | org.apache.rocketmq.proxy.config.ProxyConfig |
配置项说明
-
Proxy 配置参数说明与优化建议,这里要注意,Proxy的配置文件是 JSON 格式
| 分类 | 参数名 | 默认值 | 说明 | 优化建议 |
|---|---|---|---|---|
| 基础信息 | rocketMQClusterName |
DefaultCluster |
Broker 集群名称(Proxy 用于关联 RocketMQ 集群) | 若有多个集群,应唯一命名 |
proxyClusterName |
DefaultCluster |
Proxy 所属集群名称(与 brokerClusterName 可不同) | ✅建议独立命名,区分 Proxy 集群 | |
proxyName |
主机名(例:ip-10-250-0-175...) |
Proxy 实例名称,用于唯一标识 | ✅建议设置唯一名称 | |
localServeAddr |
本地 IP | Proxy 本地服务地址(Remoting 通信使用) | ✅建议显式指定 IP | |
| Namesrv | namesrvAddr |
多个地址(分号分隔) | NameServer 地址,Proxy 通过它同步路由 | ✅推荐配置为可访问的内网地址 |
namesrvDomain |
空 | NameServer 域名(可用于动态解析) | 可选,DNS 方式时使用 | |
namesrvDomainSubgroup |
空 | 子域分组(多集群域名发现用) | 一般可忽略 | |
| TLS 配置 | tlsTestModeEnable |
true | 测试模式下跳过验证(仅用于本地测试) | ❗生产应设为 false |
tlsKeyPath |
/conf/tls/rocketmq.key |
TLS 私钥路径 | ✅根据证书路径调整 | |
tlsCertPath |
/conf/tls/rocketmq.crt |
TLS 证书路径 | ✅根据证书路径调整 | |
| gRPC 基础 | proxyMode |
CLUSTER |
Proxy 模式:CLUSTER / LOCAL / REMOTING | ✅生产推荐 CLUSTER |
grpcServerPort |
8081 | gRPC 服务端监听端口 | 若冲突可修改 | |
grpcShutdownTimeSeconds |
30 | 优雅关闭等待时间 | 可适当调大 | |
enableGrpcEpoll |
false | 启用 Linux epoll I/O 模型 | ✅Linux 建议开启 | |
grpcMaxInboundMessageSize |
136314880 (~130MB) | 最大入站消息大小 | 根据消息大小调整 | |
| 消息限制 | maxMessageSize |
4194304 (4MB) | 最大消息体大小 | ✅应与 Broker 一致 |
enableMessageBodyEmptyCheck |
true | 校验消息体是否为空 | 保持默认即可 | |
maxUserPropertySize |
16384 (16KB) | 用户属性最大长度 | 根据业务复杂度调整 | |
userPropertyMaxNum |
128 | 单条消息最大属性数量 | 可适当调低防止性能损耗 | |
maxMessageGroupSize |
64 | 最大消息组大小(批量 pop 使用) | 默认即可 | |
| 消息可见性与延迟 | defaultInvisibleTimeMills |
60000 (60s) | pop 消息默认不可见时间 | ✅高并发时可调低 |
maxInvisibleTimeMills |
43200000 (12h) | 最大不可见时长 | ✅可根据业务降低 | |
maxDelayTimeMills |
86400000 (1d) | 最大延迟时间 | 与 Broker 保持一致 | |
useDelayLevel |
false | 是否使用延迟等级模式 | 若 Broker 启用等级延迟则开启 | |
messageDelayLevel |
"1s 5s 10s ... 2h" |
延迟等级配置表 | ✅需与 broker.conf 对齐 | |
| 线程池(gRPC 模块) | grpcBossLoopNum |
1 | Netty boss 线程 | 默认即可 |
grpcWorkerLoopNum |
4 | gRPC worker 线程 | ✅CPU>4 时可调高至核数 | |
grpcThreadPoolNums |
20 | gRPC 业务线程数 | ✅建议 ≈ CPU 核数×2 | |
grpcThreadPoolQueueCapacity |
100000 | 队列容量 | ⚠️建议 ≤20000,防 OOM | |
| 线程池(内部模块) | producerProcessorThreadPoolNums |
2 | 生产者处理线程 | ✅可根据QPS调整 |
consumerProcessorThreadPoolNums |
2 | 消费者处理线程 | 同上 | |
topicRouteServiceThreadPoolNums |
2 | 路由服务线程 | 默认即可 | |
renewThreadPoolNums |
2 | 自动续期线程 | 高并发时可调大 | |
| 缓存配置 | topicRouteServiceCacheExpiredSeconds |
300 | 路由缓存有效期 | ✅可适当调大 |
topicConfigCacheExpiredSeconds |
300 | Topic 配置缓存有效期 | 同上 | |
subscriptionGroupConfigCacheExpiredSeconds |
300 | 订阅组缓存有效期 | 同上 | |
aclCacheExpiredSeconds |
300 | ACL 缓存有效期 | ✅同上 | |
| 事务与心跳 | transactionHeartbeatThreadPoolNums |
20 | 事务心跳线程数 | ✅根据事务量调整 |
transactionHeartbeatPeriodSecond |
20 | 事务心跳周期 | 默认即可 | |
transactionDataExpireMillis |
30000 | 事务数据过期时间 | 默认即可 | |
| 指标与监控 | metricsExporterType |
DISABLE | 指标导出方式:DISABLE / PROM / GRPC / LOG | ✅建议启用 PROM |
metricsPromExporterPort |
5557 | Prometheus 导出端口 | ✅建议暴露监控 | |
metricsInDelta |
false | 是否按增量导出指标 | 默认即可 | |
| Remoting 模式 | enableRemotingLocalProxyGrpc |
true | 启用本地 Proxy gRPC 转发 | 默认即可 |
remotingListenPort |
8080 | Remoting 通信端口 | 若冲突修改 | |
sendLatencyEnable |
false | 启用发送延迟探测(LoadBalance 优化) | ✅建议开启 | |
startDetectorEnable |
false | 启用启动探测功能 | 可选,测试阶段使用 | |
| 可观测性 | traceOn |
false | 启用链路追踪 | ✅建议开启 |
enablePrintJstack |
true | 打印线程堆栈(用于诊断) | ✅可延长周期减少日志 |
-
综合优化建议
| 方向 | 建议 |
|---|---|
| 性能调优 | 启用 enableGrpcEpoll=true;合理配置线程池(如减少队列长度);设置合适的 grpcThreadPoolNums。 |
| 可靠性 | 开启 traceOn 与 sendLatencyEnable 监控;使用 Prometheus 指标导出。 |
| 安全性 | 禁用 tlsTestModeEnable,使用真实 TLS 证书。 |
| 资源管理 | 限制缓存数量(如 topic/user/acl)和线程队列容量,防止内存膨胀。 |
| 可维护性 | 使用独立的 proxyClusterName,并在配置文件 rmq-proxy.json 中明确各项端口和路径。 |