스프링 RestTemplate 타임아웃 설정을 하는데 타임아웃 시간이 설정한대로 적용되지 않는 듯 하여 테스트 해봄..
보통 HttpComponentsClientHttpRequestFactory 와 SimpleClientHttpRequestFactory 를 사용하여 설정을 함
스프링의 RestTemplate 기본적으로 SimpleClientHttpRequestFactory를 사용함
SimpleClientHttpRequestFactory를 이용해서 설정을 하면 정상적으로 세팅한 값에 타임아웃이 발생함.
하지만 HttpComponentsClientHttpRequestFactory 를 이용하면 설정한 시간보다 4배 긴 시간이 흐른 뒤에야 타임아웃이 발생하였음
@Test
public void 타임아웃_테스트() {
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setReadTimeout((int) TimeUnit.SECONDS.toMillis(10));
factory.setConnectTimeout((int) TimeUnit.SECONDS.toMillis(5)); // 4배의 시간이 걸린 뒤에야 타임아웃 발생
factory.setConnectionRequestTimeout(5 * 1000);
// SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
// factory.setReadTimeout((int) TimeUnit.SECONDS.toMillis(10));
// factory.setConnectTimeout((int) TimeUnit.SECONDS.toMillis(5)); // 세팅한 시간대로 타임아웃 발생
// RequestConfig config = RequestConfig.custom()
// .setSocketTimeout((int) TimeUnit.SECONDS.toMillis(1))
// .setConnectTimeout((int) TimeUnit.SECONDS.toMillis(5))
// .setConnectionRequestTimeout((int) TimeUnit.SECONDS.toMillis(10))
// .build();
// CloseableHttpClient client = HttpClientBuilder
// .create()
// .setDefaultRequestConfig(config)
// .build();
// HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(client);
RestTemplate restTemplate = new RestTemplate(factory);
// 1. connect timeout 테스트
long start = System.currentTimeMillis();
try {
ResponseEntity<String> result = restTemplate.getForEntity("https://abc.com:81/test", String.class);
} catch (ResourceAccessException e) {
log.error("타임아웃!! {}", TimeUtils.printDuration(System.currentTimeMillis() - start), e);
}
}
아직 원인은 확인하지 못함.
[AWS/Java] Elasticsearch 인덱스 S3로 백업/복원 하기 (0) | 2020.05.25 |
---|---|
[Kotlin/JVM] 코틀린 기본문법 (Basic Syntax) (0) | 2020.05.15 |
[Git] 원복, Revert pushed commits using CLI (커맨드라인으로 푸시 내용 원복하기) (0) | 2020.02.04 |
[AWS DynamoDB] Conditional Check Failed Exception (0) | 2019.12.18 |
이클립스 프로젝트 불러오기 (Eclipse project import) (0) | 2019.08.06 |