cps: INFO
ncmp:
dmi:
+ httpclient:
+ connectionTimeoutInSeconds: 180
+ maximumConnectionsPerRoute: 50
+ maximumConnectionsTotal: 100
+ idleConnectionEvictionThresholdInSeconds: 5
auth:
username: ${DMI_USERNAME}
password: ${DMI_PASSWORD}
@Getter
@Setter
-@ConfigurationProperties(prefix = "httpclient5", ignoreUnknownFields = true)
+@ConfigurationProperties(prefix = "ncmp.dmi.httpclient", ignoreUnknownFields = true)
public class HttpClientConfiguration {
/**
*/
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
- public static RestTemplate restTemplate(final RestTemplateBuilder restTemplateBuilder,
+ public static RestTemplate restTemplate(final RestTemplateBuilder restTemplateBuilder,
final HttpClientConfiguration httpClientConfiguration) {
-
+
final ConnectionConfig connectionConfig = ConnectionConfig.copy(ConnectionConfig.DEFAULT)
.setConnectTimeout(Timeout.of(httpClientConfiguration.getConnectionTimeoutInSeconds()))
.build();
-
+
final PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultConnectionConfig(connectionConfig)
.setMaxConnTotal(httpClientConfiguration.getMaximumConnectionsTotal())
.setMaxConnPerRoute(httpClientConfiguration.getMaximumConnectionsPerRoute())
.build();
-
+
final CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.evictExpiredConnections()
.evictIdleConnections(
TimeValue.of(httpClientConfiguration.getIdleConnectionEvictionThresholdInSeconds()))
.build();
-
+
final ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
-
+
final RestTemplate restTemplate = restTemplateBuilder
.requestFactory(() -> requestFactory)
.setConnectTimeout(httpClientConfiguration.getConnectionTimeoutInSeconds())
.build();
-
+
setRestTemplateMessageConverters(restTemplate);
return restTemplate;
}
@SpringBootTest
@ContextConfiguration(classes = [HttpClientConfiguration])
@EnableConfigurationProperties(HttpClientConfiguration.class)
-@TestPropertySource(properties = ["httpclient5.connectionTimeoutInSeconds=1", "httpclient5.maximumConnectionsTotal=200"])
+@TestPropertySource(properties = ["ncmp.dmi.httpclient.connectionTimeoutInSeconds=1", "ncmp.dmi.httpclient.maximumConnectionsTotal=200"])
class HttpClientConfigurationSpec extends Specification {
@Autowired
def 'Test HttpClientConfiguration properties with custom and default values'() {
expect: 'custom property values'
- httpClientConfiguration.getConnectionTimeoutInSeconds() == Duration.ofSeconds(1)
- httpClientConfiguration.getMaximumConnectionsTotal() == 200
+ assert httpClientConfiguration.getConnectionTimeoutInSeconds() == Duration.ofSeconds(1)
+ assert httpClientConfiguration.getMaximumConnectionsTotal() == 200
and: 'default property values'
- httpClientConfiguration.getMaximumConnectionsPerRoute() == 50
- httpClientConfiguration.getIdleConnectionEvictionThresholdInSeconds() == Duration.ofSeconds(5)
+ assert httpClientConfiguration.getMaximumConnectionsPerRoute() == 50
+ assert httpClientConfiguration.getIdleConnectionEvictionThresholdInSeconds() == Duration.ofSeconds(5)
}
}