개요
Spring boot에서 rest call을 위해 Resttemplate를 사용한다. 이때 여러 옵션(connection timout 등)을 사용하기 위해 아래와 같이 Restemplate에 RequestFactory를 주입하여 사용하는 경우가 있다. 이 경우 각 옵션이 어떤 역할을 하는지 알아보자
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectionRequestTimeout(30000);
requestFactory.setConnectTimeout(30000);
requestFactory.setReadTimeout(30000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
RequestFactory methods
1) setConnectTimeout
/**
* 대상서버와 소켓 연결을 맺을 때 timeout 시간 설정
* 0은 무한히 기다리는 것을 뜻함
*/
public void setConnectTimeout(int timeout) {
Assert.isTrue(timeout >= 0, "Timeout must be a non-negative value");
this.requestConfig = requestConfigBuilder().setConnectTimeout(timeout).build();
}
2) setConnectionRequestTimeout
/**
* ConnectionManager(커넥션풀)로부터 꺼내올 때의 timeout 시간 설정
*/
public void setConnectionRequestTimeout(int connectionRequestTimeout) {
this.requestConfig = requestConfigBuilder()
.setConnectionRequestTimeout(connectionRequestTimeout).build();
}
3) setReadTimeout
/**
* http통신을 위해 소켓이 연결된 이후 request에 대한 응답이 늦어지는 경우
*/
public void setReadTimeout(int timeout) {
Assert.isTrue(timeout >= 0, "Timeout must be a non-negative value");
this.requestConfig = requestConfigBuilder().setSocketTimeout(timeout).build();
}
반응형
'Programming Language > Java & Scala' 카테고리의 다른 글
스레드풀(Thread Pool)이란? 종류, 설명 (2) | 2020.02.19 |
---|---|
JVM 버젼별 Scala 하위호환표(JDK Compatibility for scala) (0) | 2020.02.18 |
DateTimeFormatter에서 년도표시에 yyyy대신 uuuu를 사용해야하는 이유? (0) | 2019.11.21 |
Resttemplate으로 PATCH 사용시 에러나는 경우 해결방법 - Invalid HTTP method: PATCH; nested exception is java.net.ProtocolException: Invalid HTTP method: PATCH (368) | 2019.06.27 |
Android studio에서 gradle upgrade시 deprecated feature 확인 옵션 켜는 방법 (392) | 2019.05.08 |
Java gc log 분석, 시각화하는 무료 사이트 추천 gceasy.io (407) | 2019.05.07 |