공부기록/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를 사용하기 때문에, 비동기적으로 통신한다는 것으로 볼 수 있습니다.