Spring
Spring Boot에서 RestTemplate 빈 등록을 해야할까?
jnk1m
2022. 12. 14. 09:27
이 댓글 보고 찾아보았다.
RestTemplateAutoConfiguration (Spring Boot 3.0.0 API)
java.lang.Object org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
docs.spring.io
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
그냥 new해서 레스트 템플릿 만들면 동작은 하는데 서버에 올리면 장애가 날거다.
accountOpenApi가 backendServer를 호출해서 작업하는 리소스가 부족해서 응답을 느리게 해주면 openApi는 무한대로 기다리게 된다.
해결 방법
RestTemplateBuilder를 이용하자
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
.setReadTimeout(Duration.ofSeconds(3L))
.setConnectTimeout(Duration.ofSeconds(3L))
.build();
}
RestTemplateBuilder를 주입 받아서 ReadTimeOut ConnectTimeOut 설정해주기
ReadTimeOut: 기다리는 시간. 3초 기다리고 응답 없으면 예외 발생. 응답하는 서버의 시간에 따라 유연하게 대응.