RocketMQ Proxy 的配置项

摘要

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

  • RocketMQ官网

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