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; } - }
