This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 7347c44b06 [ISSUE #10510] Add gRPC server permit keepalive 
configuration (#10516)
7347c44b06 is described below

commit 7347c44b0609a34affdd1893a3532e79ac33e325
Author: RockteMQ-AI <[email protected]>
AuthorDate: Mon Jun 15 16:43:51 2026 +0800

    [ISSUE #10510] Add gRPC server permit keepalive configuration (#10516)
---
 .../org/apache/rocketmq/proxy/config/ProxyConfig.java  | 18 ++++++++++++++++++
 .../apache/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);

Reply via email to