Re-use ncmp.dmi.httpclient.maximumConnectionsTotal parameter 06/137806/4
authorsourabh_sourabh <sourabh.sourabh@est.tech>
Mon, 29 Apr 2024 14:42:22 +0000 (15:42 +0100)
committersourabh_sourabh <sourabh.sourabh@est.tech>
Mon, 29 Apr 2024 16:04:57 +0000 (17:04 +0100)
(as documented in RTD) to control webclient connection poolsize

Issue-ID: CPS-2198

Change-Id: Id441208c66433b2539adf83a0881c3c3c79d2b15
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfiguration.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/HttpClientConfiguration.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/DmiWebClientConfigurationSpec.groovy

index 8ac2e3f..eeeb64b 100644 (file)
@@ -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
index 729930e..d547e31 100644 (file)
@@ -1,4 +1,4 @@
-/*-
+/*
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2023 Nordix Foundation.
  * ================================================================================
index 2ce5b50..93b3c63 100644 (file)
@@ -40,6 +40,7 @@ class DmiWebClientConfigurationSpec extends Specification {
     def setup() {
         objectUnderTest.connectionTimeoutInSeconds = 10
         objectUnderTest.maximumInMemorySizeInMegabytes = 1
+        objectUnderTest.maximumConnectionsTotal = 2
     }
 
     def 'DMI Properties.'() {