Browse Source

added ability to configure maxConnections in TbHttpClient using env TB_POOL_MAX_CONNECTIONS

pull/11618/head
YevhenBondarenko 2 years ago
parent
commit
4b697482ca
  1. 20
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java

20
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java

@ -42,6 +42,7 @@ import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.msg.TbMsg;
import org.thingsboard.server.common.msg.TbMsgMetaData;
import reactor.netty.http.client.HttpClient;
import reactor.netty.resources.ConnectionProvider;
import reactor.netty.transport.ProxyProvider;
import javax.net.ssl.SSLException;
@ -95,7 +96,12 @@ public class TbHttpClient {
semaphore = new Semaphore(config.getMaxParallelRequestsCount());
}
HttpClient httpClient = HttpClient.create()
ConnectionProvider connectionProvider = ConnectionProvider
.builder("http")
.maxConnections(getPoolMaxConnections())
.build();
HttpClient httpClient = HttpClient.create(connectionProvider)
.runOn(getSharedOrCreateEventLoopGroup(eventLoopGroupShared))
.doOnConnected(c ->
c.addHandlerLast(new ReadTimeoutHandler(config.getReadTimeoutMs(), TimeUnit.MILLISECONDS)));
@ -143,6 +149,18 @@ public class TbHttpClient {
}
}
private int getPoolMaxConnections() {
String poolMaxConnectionsEnv = System.getenv("TB_POOL_MAX_CONNECTIONS");
int poolMaxConnections;
if (poolMaxConnectionsEnv != null) {
poolMaxConnections = Integer.parseInt(poolMaxConnectionsEnv);
} else {
poolMaxConnections = ConnectionProvider.DEFAULT_POOL_MAX_CONNECTIONS;
}
return poolMaxConnections;
}
private void validateMaxInMemoryBufferSize(TbRestApiCallNodeConfiguration config) throws TbNodeException {
int systemMaxInMemoryBufferSizeInKb = 25000;
try {

Loading…
Cancel
Save