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

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

commit b81e90cbb594f7fc1224477828a575a3ca156c0d
Author: 尘央 <[email protected]>
AuthorDate: Wed Jul 27 21:29:50 2022 +0800

    [ISSUE #4712] add maxConnectionIdle for grpc server
---
 .../java/org/apache/rocketmq/proxy/config/ProxyConfig.java   |  9 +++++++++
 .../org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java    | 12 +++++++-----
 2 files changed, 16 insertions(+), 5 deletions(-)

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 bc7c58b6a..743269aa7 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
@@ -91,6 +91,7 @@ public class ProxyConfig implements ConfigFile {
     private int grpcClientProducerBackoffMultiplier = 2;
     private long grpcClientConsumerLongPollingTimeoutMillis = 
Duration.ofSeconds(30).toMillis();
     private int grpcClientConsumerLongPollingBatchSize = 32;
+    private long grpcClientIdleTimeMills = Duration.ofSeconds(120).toMillis();
 
     private int channelExpiredInSeconds = 60;
     private int contextExpiredInSeconds = 30;
@@ -855,4 +856,12 @@ public class ProxyConfig implements ConfigFile {
     public Map<Integer, Long> getDelayLevelTable() {
         return delayLevelTable;
     }
+
+    public long getGrpcClientIdleTimeMills() {
+        return grpcClientIdleTimeMills;
+    }
+
+    public void setGrpcClientIdleTimeMills(final long grpcClientIdleTimeMills) 
{
+        this.grpcClientIdleTimeMills = grpcClientIdleTimeMills;
+    }
 }
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 024766bf4..509414b57 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
@@ -35,6 +35,7 @@ import java.nio.file.Paths;
 import java.security.cert.CertificateException;
 import java.util.List;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 import javax.net.ssl.SSLException;
 import org.apache.rocketmq.acl.AccessValidator;
 import org.apache.rocketmq.common.constant.LoggerName;
@@ -70,21 +71,23 @@ public class GrpcServerBuilder {
         int bossLoopNum = 
ConfigurationManager.getProxyConfig().getGrpcBossLoopNum();
         int workerLoopNum = 
ConfigurationManager.getProxyConfig().getGrpcWorkerLoopNum();
         int maxInboundMessageSize = 
ConfigurationManager.getProxyConfig().getGrpcMaxInboundMessageSize();
+        long idleTimeMills = 
ConfigurationManager.getProxyConfig().getGrpcClientIdleTimeMills();
 
         if (ConfigurationManager.getProxyConfig().isEnableGrpcEpoll()) {
-            serverBuilder.maxInboundMessageSize(maxInboundMessageSize)
-                .bossEventLoopGroup(new EpollEventLoopGroup(bossLoopNum))
+            serverBuilder.bossEventLoopGroup(new 
EpollEventLoopGroup(bossLoopNum))
                 .workerEventLoopGroup(new EpollEventLoopGroup(workerLoopNum))
                 .channelType(EpollServerSocketChannel.class)
                 .executor(executor);
         } else {
-            serverBuilder.maxInboundMessageSize(maxInboundMessageSize)
-                .bossEventLoopGroup(new NioEventLoopGroup(bossLoopNum))
+            serverBuilder.bossEventLoopGroup(new 
NioEventLoopGroup(bossLoopNum))
                 .workerEventLoopGroup(new NioEventLoopGroup(workerLoopNum))
                 .channelType(NioServerSocketChannel.class)
                 .executor(executor);
         }
 
+        serverBuilder.maxInboundMessageSize(maxInboundMessageSize)
+                .maxConnectionIdle(idleTimeMills, TimeUnit.MILLISECONDS);
+
         log.info(
             "grpc server has built. port: {}, tlsKeyPath: {}, tlsCertPath: {}, 
threadPool: {}, queueCapacity: {}, "
                 + "boosLoop: {}, workerLoop: {}, maxInboundMessageSize: {}",
@@ -153,5 +156,4 @@ public class GrpcServerBuilder {
 
         return this;
     }
-
 }

Reply via email to