Reactor란?
- 리액티브 스트림즈의 구현체로 리액티브 프로그래밍을 위한 라이브러리이다.
- 세부 구성요소
- Flux: Publisher의 두 가지 타입 중 하나이다. Flux[N]은 N개의 데이터를 emit한다는 것을 의미한다.
- Mono[0|1]: Mono 역시 Reactor에서 지원하는 Publisher 타입인데, Mono가 데이터를 한 건도 emit하지 않거나 단 한 건만 emit하는 단발성 데이터 emit에 특화된 publisher이기 때문이다.
- Backpressure-ready network: Reactor는 Publisher로부터 전달받은 데이터를 처리하는 데 있어 과부하가 걸리지 않도록 제어하는 BackPressuer를 지원한다.
Flux 예시 소스
@SpringBootApplication
public class SpringSecurityWebFluxApplication {
public static void main(String[] args) {
Flux<String> sequence = Flux.just("Hello", "Reactor") ;
sequence.map(String::toLowerCase)
.subscribe(System.out::println) ;
// SpringApplication.run(SpringSecurityWebFluxApplication.class, args);
}
}
- Flux.just 메소드의 "Hello", "Reactor"가 Publisher가 최초로 제공하는 가공되지 않은 데이터로서 '데이터 소스'라고 불린다.
- subscribe 메서드가 Subscriber 역할을 수행한다.