Spring에서 RestTemplate을 사용하여 외부 api를 호출하거나, http 요청을 하는 경우가 많다.

RestTemplate 같은 경우 사용법 자체는 간단하게

RestTemplate restTemplate = new RestTemplate()

이후 해당 객체를 사용하고 있었다.

해당 객체를 이용해서 http 통신은 잘 되지만 한 가지 주의해야 할 사항이 있다.

바로 restTemplate을 사용할 때에는 timeout을 설정을 반드시 따로 해주어야 한다는 것이다.

default 값은 timeout이 무제한이기 때문에 통신 중간에 에러 발생 시 핸들링이 되지 않는 경우가 생긴다.

별도 스레드에서 resttemplate을 사용 중이었는데, 해당 스레드에서 timeout이 발생했을 때, 제대로 풀에 반납되지 않고 계속 사용상태로 남아있는 이슈가 있었다.