스프링 WebFlux는 HTTP Request를 수행하는 client인 WebClient를 포함하고 있다. 웹으로 API를 호출하기 위해 사용되는 HTTP Client 모듈 중 하나이다. 비동기/논블로킹을 지원하는 HTTP Request Client(API)이다.
멀티쓰레드와 동기/블로킹 방식을 사용한다.
1) 클라이언트 애플리케이션 구동 시 쓰레드 풀을 만든다.
2) Request는 먼저 queue에 쌓이고 가용 쓰레드가 있으면 해당 쓰레드에 할당된다. (1요청 당 1쓰레드 할당)
3) 각 쓰레드는 블로킹 방식이기 때문에 완료 응답이 올 때까지 다른 요청에 할당될 수 없다.
4) 쓰레드가 다 찼다면 이후 요청은 queue에 대기하게 된다.
싱글쓰레드와 비동기/논블로킹 방식을 사용한다. 코어당 1개의 쓰레드를 이용한다.
1) 각 요청은 event loop 내에 job으로 등록이 되고, job을 제공자에게 요청한 후 응답 결과를 기다리지 않고 다른 job을 처리한다.
2) callback을 통해 제공자에게 응답 결과가 오면 그 결과를 요청자에게 제공한다.
1) 정적 팩토리 메서드 사용
2) WebClient.builder()
*참고 자료
https://binux.tistory.com/56
https://happycloud-lee.tistory.com/220
https://araikuma.tistory.com/832?category=991358
https://ict-nroo.tistory.com/119