RocketMQ Proxy 的配置项

摘要

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

  • RocketMQ官网

  • 本文使用的 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
可靠性 开启 traceOnsendLatencyEnable 监控;使用 Prometheus 指标导出。
安全性 禁用 tlsTestModeEnable,使用真实 TLS 证书。
资源管理 限制缓存数量(如 topic/user/acl)和线程队列容量,防止内存膨胀。
可维护性 使用独立的 proxyClusterName,并在配置文件 rmq-proxy.json 中明确各项端口和路径。