From 7347c44b0609a34affdd1893a3532e79ac33e325 Mon Sep 17 00:00:00 2001 From: RockteMQ-AI Date: Mon, 15 Jun 2026 16:43:51 +0800 Subject: [PATCH] [ISSUE #10510] Add gRPC server permit keepalive configuration (#10516) --- .../rocketmq/proxy/config/ProxyConfig.java | 18 ++++++++++++++++++ .../rocketmq/proxy/grpc/GrpcServerBuilder.java | 4 +++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java b/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java index 5a1a585930..3068109835 100644 --- a/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java +++ b/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java @@ -156,6 +156,8 @@ public class ProxyConfig implements ConfigFile { private long grpcClientConsumerMaxLongPollingTimeoutMillis = Duration.ofSeconds(20).toMillis(); private int grpcClientConsumerLongPollingBatchSize = 32; private long grpcClientIdleTimeMills = Duration.ofSeconds(120).toMillis(); + private long grpcServerPermitKeepAliveTimeMillis = 30000; + private boolean grpcServerPermitKeepAliveWithoutCalls = true; private int channelExpiredInSeconds = 60; private int contextExpiredInSeconds = 30; @@ -1221,6 +1223,22 @@ public class ProxyConfig implements ConfigFile { this.grpcClientIdleTimeMills = grpcClientIdleTimeMills; } + public long getGrpcServerPermitKeepAliveTimeMillis() { + return grpcServerPermitKeepAliveTimeMillis; + } + + public void setGrpcServerPermitKeepAliveTimeMillis(long grpcServerPermitKeepAliveTimeMillis) { + this.grpcServerPermitKeepAliveTimeMillis = grpcServerPermitKeepAliveTimeMillis; + } + + public boolean isGrpcServerPermitKeepAliveWithoutCalls() { + return grpcServerPermitKeepAliveWithoutCalls; + } + + public void setGrpcServerPermitKeepAliveWithoutCalls(boolean grpcServerPermitKeepAliveWithoutCalls) { + this.grpcServerPermitKeepAliveWithoutCalls = grpcServerPermitKeepAliveWithoutCalls; + } + public String getRegionId() { return regionId; } diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java index 1f012e6f40..f59c4982c4 100644 --- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java +++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java @@ -78,7 +78,9 @@ public class GrpcServerBuilder { } serverBuilder.maxInboundMessageSize(maxInboundMessageSize) - .maxConnectionIdle(idleTimeMills, TimeUnit.MILLISECONDS); + .maxConnectionIdle(idleTimeMills, TimeUnit.MILLISECONDS) + .permitKeepAliveTime(config.getGrpcServerPermitKeepAliveTimeMillis(), TimeUnit.MILLISECONDS) + .permitKeepAliveWithoutCalls(config.isGrpcServerPermitKeepAliveWithoutCalls()); log.info("grpc server has built. port: {}, bossLoopNum: {}, workerLoopNum: {}, maxInboundMessageSize: {}", port, bossLoopNum, workerLoopNum, maxInboundMessageSize);