From a44f5f79543641dbf3f07d226f1c996d672ad0a8 Mon Sep 17 00:00:00 2001 From: sourabh_sourabh Date: Mon, 29 Apr 2024 15:42:22 +0100 Subject: [PATCH] Re-use ncmp.dmi.httpclient.maximumConnectionsTotal parameter (as documented in RTD) to control webclient connection poolsize Issue-ID: CPS-2198 Change-Id: Id441208c66433b2539adf83a0881c3c3c79d2b15 Signed-off-by: sourabh_sourabh --- .../api/impl/config/DmiWebClientConfiguration.java | 41 ++++++++++++---------- .../api/impl/config/HttpClientConfiguration.java | 2 +- .../config/DmiWebClientConfigurationSpec.groovy | 1 + 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfiguration.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfiguration.java index 8ac2e3fc1..eeeb64bbd 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfiguration.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfiguration.java @@ -1,22 +1,21 @@ - /* - * ============LICENSE_START======================================================= - * Copyright (C) 2024 Nordix Foundation - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= */ package org.onap.cps.ncmp.api.impl.config; @@ -27,7 +26,6 @@ import io.netty.handler.timeout.WriteTimeoutHandler; import java.util.concurrent.TimeUnit; import lombok.Getter; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -37,8 +35,8 @@ import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.client.WebClient; import reactor.netty.http.client.HttpClient; +import reactor.netty.resources.ConnectionProvider; -@Slf4j @Configuration @RequiredArgsConstructor public class DmiWebClientConfiguration { @@ -49,6 +47,9 @@ public class DmiWebClientConfiguration { @Value("${ncmp.dmi.httpclient.maximumInMemorySizeInMegabytes:1}") private Integer maximumInMemorySizeInMegabytes; + @Value("${ncmp.dmi.httpclient.maximumConnectionsTotal:100}") + private Integer maximumConnectionsTotal; + @Getter @Component public static class DmiProperties { @@ -69,7 +70,11 @@ public class DmiWebClientConfiguration { */ @Bean public WebClient webClient() { - final var httpClient = HttpClient.create() + + final ConnectionProvider dmiWebClientConnectionProvider + = ConnectionProvider.create("dmiWebClientConnectionPool", maximumConnectionsTotal); + + final HttpClient httpClient = HttpClient.create(dmiWebClientConnectionProvider) .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectionTimeoutInSeconds * 1000) .doOnConnected(connection -> connection diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/HttpClientConfiguration.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/HttpClientConfiguration.java index 729930e65..d547e31c6 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/HttpClientConfiguration.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/HttpClientConfiguration.java @@ -1,4 +1,4 @@ -/*- +/* * ============LICENSE_START======================================================= * Copyright (C) 2023 Nordix Foundation. * ================================================================================ diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfigurationSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfigurationSpec.groovy index 2ce5b5009..93b3c6380 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfigurationSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfigurationSpec.groovy @@ -40,6 +40,7 @@ class DmiWebClientConfigurationSpec extends Specification { def setup() { objectUnderTest.connectionTimeoutInSeconds = 10 objectUnderTest.maximumInMemorySizeInMegabytes = 1 + objectUnderTest.maximumConnectionsTotal = 2 } def 'DMI Properties.'() { -- 2.16.6