Programming Language/Java & Scala
Spring boot Resttemplate 사용시 HttpComponentsClientHttpRequestFactory 옵션 설명(setConnectTimeout, setConnectionRequestTimeout, setReadTimeout)
AndersonChoi
2019. 6. 28. 13:29
개요
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();
}
반응형