first commit

This commit is contained in:
himanshu
2025-10-24 17:16:53 +05:30
parent 988fc8edca
commit 948e508d0c
25 changed files with 1070 additions and 1 deletions
@@ -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);
}
}