first commit
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package com.billpaymentservice.bbps.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Service
|
||||
@ConfigurationProperties(prefix = "certificate")
|
||||
@Getter
|
||||
@Setter
|
||||
public class CertificateConfig {
|
||||
private String path;
|
||||
private String password;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.billpaymentservice.bbps.config;
|
||||
|
||||
import org.apache.hc.client5.http.config.RequestConfig;
|
||||
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
|
||||
import org.apache.hc.client5.http.impl.classic.HttpClients;
|
||||
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
|
||||
import org.apache.hc.core5.util.TimeValue;
|
||||
import org.apache.hc.core5.util.Timeout;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@Configuration
|
||||
public class RestTemplateConfig {
|
||||
|
||||
@Bean
|
||||
public RestTemplate restTemplate() {
|
||||
// ✅ Timeout config
|
||||
RequestConfig requestConfig = RequestConfig.custom()
|
||||
.setConnectionRequestTimeout(Timeout.ofSeconds(5)) // pool wait
|
||||
.setConnectTimeout(Timeout.ofSeconds(5)) // TCP connect
|
||||
.setResponseTimeout(Timeout.ofSeconds(10)) // response read
|
||||
.build();
|
||||
|
||||
// ✅ Connection pool manager (HttpClient5 style)
|
||||
var connManager = PoolingHttpClientConnectionManagerBuilder.create()
|
||||
.setMaxConnTotal(200)
|
||||
.setMaxConnPerRoute(50)
|
||||
.build();
|
||||
|
||||
// ✅ Build HttpClient
|
||||
CloseableHttpClient httpClient = HttpClients.custom()
|
||||
.setDefaultRequestConfig(requestConfig)
|
||||
.setConnectionManager(connManager)
|
||||
.disableAutomaticRetries()
|
||||
.evictExpiredConnections()
|
||||
.evictIdleConnections(TimeValue.ofSeconds(30))
|
||||
.build();
|
||||
|
||||
// ✅ Bind RestTemplate with HttpClient
|
||||
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
|
||||
factory.setBufferRequestBody(true);
|
||||
|
||||
return new RestTemplate(factory);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user