5.1 Reactor란?
- Reactor: 리액티브 스트림즈의 구현체, Spring WebFlux에 라이브러리로 포함되어 있음
리액터 특징은 다음과 같다.
- Recative Streams: 리액티브 스트림즈 사양을 구현함
- Non-Blocking
- Java's functional API: Publisher, Subscriber 간의 상호 작용이 함수형 api 로 이루어짐
Flux[N]
: N 개의 데이터를 emit 할 수 있음
Mono[0|1]
: 0또는1개의 데이터 emit
- Well-suited for microservices
- Backpressure-ready network: Publisher로 부터 전달받은 데이터를 처리하는 데 있어 과부하가 걸리지 않도록 제어하는 Backpressure 지원
5.2 Hello Reactor 코드로 보는 Reactor 구성요소
public class Example5_1 {
public static void main(String[] args) {
Flux<String> sequence = Flux.just("Hello", "Reactor");
sequence.map(data -> data.toLowerCase())
.subscribe(data -> System.out.println(data));
}
}
- Publisher: Flux, 입력으로 들어오는 데이터 제공. 여기서는 "Hello", "Reactor" 두개 이므로 Flux 사용
- Subscriber: subscribe 파라미터인 람다함수 print
- Operator: just, map
- just: 데이터 생성해서 제공
- map: 전달받은 데이터 가공