RocketMQ Proxy 的配置项
摘要
-
本文介绍 RocketMQ Proxy 的配置项。
-
本文使用的 RocketMQ 版本为 5.3.2。
配置项项目源码简介
-
当前版本尚不支持通过命令行查看 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 | RocketMQ 集群名称 | 若有多个集群,应设置唯一名称 |
proxyClusterName |
DefaultCluster | Proxy 所属集群名 | ✅建议独立于 broker 集群命名 | |
proxyName |
主机名或 DEFAULT_PROXY | Proxy 实例名 | 使用唯一命名防止冲突 | |
localServeAddr |
空 | Proxy 服务监听地址 | 建议显式指定本机 IP | |
| Namesrv | namesrvAddr |
环境变量或系统属性 | NameServer 地址 | ✅推荐配置为 proxy 可访问的内部地址 |
namesrvDomain |
空 | NameServer 域名 | 可配合域名发现机制 | |
namesrvDomainSubgroup |
空 | 子域名分组 | 可忽略,或多集群时配置 | |
| TLS 配置 | tlsTestModeEnable |
true | 是否启用 TLS 测试模式 | 生产环境禁用(false) |
tlsKeyPath |
${PROXY_HOME}/conf/tls/rocketmq.key |
TLS 私钥路径 | ✅根据证书路径修改 | |
tlsCertPath |
${PROXY_HOME}/conf/tls/rocketmq.crt |
TLS 证书路径 | ✅根据证书路径修改 | |
| gRPC 基础 | proxyMode |
CLUSTER | 模式(CLUSTER / LOCAL / REMOTING) | ✅生产推荐 CLUSTER |
grpcServerPort |
8081 | gRPC 监听端口 | 若冲突可改 | |
grpcShutdownTimeSeconds |
30 | 优雅关闭等待时间 | 可略调大 | |
enableGrpcEpoll |
false | 启用 Epoll 模式(Linux) | ✅在 Linux 上开启提高性能 | |
grpcMaxInboundMessageSize |
130MB | gRPC 接收最大消息 | 根据消息体调整 | |
| 消息限制 | maxMessageSize |
4MB | 最大消息体大小 | ✅与 broker 限制一致 |
enableMessageBodyEmptyCheck |
true | 校验空消息体 | 保持默认 | |
maxUserPropertySize |
16KB | 用户属性最大长度 | 视业务复杂度调整 | |
userPropertyMaxNum |
128 | 最大属性数 | 可根据情况调小 | |
maxMessageGroupSize |
64 | 最大分组大小 | 默认即可 | |
| 消息可见性与延迟 | defaultInvisibleTimeMills |
60s | pop 消息默认不可见时长 | ✅高并发可调低 |
maxInvisibleTimeMills |
12h | 最大不可见时间 | 生产环境可降低 | |
maxDelayTimeMills |
1d | 最大延迟 | 与 Broker 保持一致 | |
useDelayLevel |
false | 是否使用延迟等级 | ✅若 Broker 开启等级延迟则开启 | |
messageDelayLevel |
"1s 5s 10s 30s 1m ..." |
延迟等级表 | 需与 broker.conf 对齐 | |
| 线程池(gRPC 模块) | grpcBossLoopNum |
1 | Boss 线程数 | 默认即可 |
grpcWorkerLoopNum |
2 × CPU核数 | Worker 线程数 | ✅CPU核数较多时限制上线 | |
grpcThreadPoolNums |
16 + 2×CPU | RPC 线程池大小 | ✅过大会浪费内存 | |
grpcThreadPoolQueueCapacity |
100000 | 队列容量 | ✅建议 ≤ 20000 防止OOM | |
| 线程池(内部模块) | producerProcessorThreadPoolNums |
CPU核数 | 生产者请求处理线程 | ✅根据QPS调整 |
consumerProcessorThreadPoolNums |
CPU核数 | 消费者请求处理线程 | 同上 | |
topicRouteServiceThreadPoolNums |
CPU核数 | 路由服务线程数 | 默认即可 | |
renewThreadPoolNums |
2 | 自动续期线程数 | 可视场景调大 | |
| 缓存配置 | topicRouteServiceCacheExpiredSeconds |
300 | 路由缓存过期时间 | ✅可调大减少namesrv压力 |
topicConfigCacheExpiredSeconds |
300 | Topic 配置缓存时间 | 同上 | |
subscriptionGroupConfigCacheExpiredSeconds |
300 | 订阅组缓存 | 同上 | |
aclCacheExpiredSeconds |
300 | ACL 缓存时间 | 同上 | |
| 事务与心跳 | transactionHeartbeatThreadPoolNums |
20 | 事务心跳线程 | 可视并发调整 |
transactionHeartbeatPeriodSecond |
20 | 心跳周期 | 建议保持默认 | |
transactionDataExpireMillis |
30s | 数据过期时间 | 默认 | |
| 指标与监控 | metricsExporterType |
DISABLE | 指标导出方式 (PROM, GRPC, LOG) | ✅建议启用 PROM |
metricsPromExporterPort |
5557 | Prometheus 端口 | ✅建议暴露以监控 proxy 性能 | |
metricsInDelta |
false | 是否按增量导出指标 | 默认即可 | |
| Remoting 模式 | enableRemotingLocalProxyGrpc |
true | 是否启用本地 proxy gRPC 通信 | 默认即可 |
remotingListenPort |
8080 | Remoting 监听端口 | ✅若有冲突修改 | |
sendLatencyEnable |
false | 启用发送延迟探测 | ✅建议开启优化负载均衡 | |
startDetectorEnable |
false | 启用探测功能 | 可视情况开启 | |
| 可观测性 | traceOn |
false | 启用 trace | ✅建议开启,便于问题追踪 |
enablePrintJstack |
true | 打印线程堆栈信息 | ✅生产环境保留但周期可延长 |
-
综合优化建议
| 方向 | 建议 |
|---|---|
| 性能调优 | 启用 enableGrpcEpoll=true;合理配置线程池(如减少队列长度);设置合适的 grpcThreadPoolNums。 |
| 可靠性 | 开启 traceOn 与 sendLatencyEnable 监控;使用 Prometheus 指标导出。 |
| 安全性 | 禁用 tlsTestModeEnable,使用真实 TLS 证书。 |
| 资源管理 | 限制缓存数量(如 topic/user/acl)和线程队列容量,防止内存膨胀。 |
| 可维护性 | 使用独立的 proxyClusterName,并在配置文件 rmq-proxy.json 中明确各项端口和路径。 |