공부기록/Spring

스프링에서 다른 서버와 비동기로 통신하는 방법

DGL 2021. 12. 29. 12:00

기존에 다른 서버와 통신하는 방법은, 만약 rest api였다면

restTemplate을 사용하면 됐습니다.

 

비동기적으로 통신하려면 asyncRestTemplate을 사용하면 됩니다.

 

그러나, 기본적으로 blocking io를 사용하고 있기 때문에, non-blocking io를 사용해야 진정으로 성능이 나올 수 있습니다.

 

그렇게 asyncRestTemplate을 사용하면, listenableFuture가 결과로 나오게 되는데, 그것에 callback으로 어떤 처리를 할지 작성할 수 있습니다.

 

아니면 그것을 completable future로 감싸서 사용을 하면 됩니다. 

 

asyncRestTemplate 뿐만 아니라, completableFuture를 사용하는 경우는 모두 비동기적으로 통신할 수 있습니다. 예를 들면 webFlux도 completableFuture를 사용하기 때문에, 비동기적으로 통신한다는 것으로 볼 수 있습니다.