✅ Spring WebFlux는 기본적으로 비동기 & 논블로킹 방식으로 동작
✅ blocking으로 결과를 받으려 한 경우 예외 발생
Mono<String> response = webClient.get()
.uri("https://example.com/api")
.retrieve()
.bodyToMono(String.class);
String result = response.block(); // Exception
System.out.println(result);
block() 호출 시 현재 WebFlux 스트림을 잡고있는 Netty 스레드는 응답이 올 때까지 블럭블로킹 응답 형태
Mono<String> response = webClient.get()
.uri("https://example.com/api")
.retrieve()
.bodyToMono(String.class);
String result = response.subscribeOn(Schedulers.boundedElastic()).block();
System.out.println(result);
블로킹 스트림 형태
Mono<String> response = webClient.get()
.uri("https://example.com/api")
.retrieve()
.bodyToMono(String.class)
.publishOn(Schedulers.boundedElastic())
.doOnNext(res -> System.out.println("Response: " + res));
response.subscribe();