Chapter.5 : Reactor 개요
5.1 Reactor란?
Reactor는 스프링 팀 주도하에 개발된 리액티브 스트림즈 구현체로서 스프링5부터 리액티브 스택에 포함되어 WebFlux 기반 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 담당한다. Reactor는 리액티브 프로그래밍을 하기 위한 라이브러리라고 정의할 수 있다.
5.2 Hello Reactor 코드로 보는 구성요소
public class Example5_1 {
public static void main(String[] args) {
Flux<String> flux = Flux.just("Hello", "Reactor");
flux.map(String::toLowerCase)
.subscribe(System.out::println);
}
}
- Flux는 Publisher 역할을 한다. 즉, 입력으로 들어오는 데이터를 제공하는 역할을 한다.
- Hello, Reactor가 입력으로 들어오는 데이터다.
- 이 데이터는 Publisher가 최초로 제공하는 가공되지 않은 데이터로서
데이터 소스
라고 불린다.
- 데이터 소스의 데이터 개수가 2개이므로 Flux다. (Mono 아님)
- 데이터를 제공하는 publisher가 있으므로 subscriber도 있어야 한다.
System.out::println
이 부분이 Subscriber 역할을 한다.
- just, map 같은 함수는 Reactor에서 제공하는 Operator다.
- just는 데이터를 생성하고 제공하는 역할
- map은 전달받은 데이터를 가공하는 역할
- Reactor의 Operator는 Flux, Mono를 반환하기 때문에 Operator 체인을 형성할 수 있다.
Reacotr의 핵심은
- 데이터를 생성해서 제공하고
- 데이터를 가공한 후에
- 데이터를 처리한다.
Chapter.6 : 마블 다이어그램
