Spring Webflux 에서는 어떤 thread 들이 어떻게 request 를 처리하는지 정리한다.
Threads: reactor-http-nio
1 2 3 4
On a “vanilla” Spring WebFlux server (for example, no data access nor other optional dependencies), you can expect one thread for the server and several others for request processing (typically as many as the number of CPU cores). Servlet containers, however, may start with more threads (for example, 10 on Tomcat), in support of both servlet (blocking) I/O and servlet 3.1 (non-blocking) I/O usage.
Spring 공식 문서에 따르면, 부가적인 dependency 가 없는 Spring WebFlux 서버는,
서버를 위한 thread 하나와
요청 처리를 위한 여러 thread 들로 구성된다.
spring-boot-starter-webflux dependency 만 추가해서 project 하나를 만들어보자.
위에서 만든 endpoint 로 여러 요청을 해보자. 아래와 같이, 16개의 worker thread 가 요청 처리를 하고 있는 것을 알 수 있다.
WebClient Threads
1 2 3
The reactive WebClient operates in event loop style. So you can see a small, fixed number of processing threads related to that (for example, reactor-http-nio- with the Reactor Netty connector). However, if Reactor Netty is used for both client and server, the two share event loop resources by default.
Spring 공식 문서에 따르면, WebClient 는 이벤트 루프 스타일로 동작한다. 다음 endpoint 를 추가해보자.