- Reactive Programming 을 위한 Reactive 라이브러리를 의미한다.
- Reactive Streams 스펙을 구현한 구현체 중 하나이다.
- Spring 에코 시스템에서 Reactive Stack 의 기반이 되며 Spring WebFlux 프레임워크에 포함이 되어 있다.
✏️ 용어 정리
- Publisher - 발행자, 게시자, 생산자, 방출자
- Subscriber - 구독자, 소비자
- Emit
- Publisher 가 데이터를 내보내는 것
- 방출, 내보냄, 통지
- Sequence
- Publisher 가 Emit 한 데이터의 연속적인 흐름을 정의해 놓은 것
- Operator 체인 형태로 정의 됨
- Subscribe
- Subscriber 가 Sequence 를 구독하는 것
- Dispose
- Subscriber 가 Sequence 구독을 해지 하는 것
- Operater
✏️ 예제
- Reactor 의 흐름은 크게 3가지 흐름이 있다.
- 데이터를 생산하는 생산 과정
- 데이터를 연산하는 operater 과정
- 데이터를 구독자에게 전달하는 과정
- Reactor 의 Publisher 는 대표적으로
Mono
와 Flux
가 있다.
- 데이터를 생성하기 때문에
생산자
라고도 부른다.
just()
는 Emit 을 수행하는 메서드로 인자를 data 라고 한다.
Flux
가 생산한 데이터를 just
와 map
을 사용해 체이닝 방식으로 연산하고있다.
- 마지막으로 operater 된 데이터를 구독자에게 전달하고 있다.
- 생산자로 부터
subscirbe()
가 호출되었기 때문에 생산자가 구독을 한 형태로 볼 수 있지만 그렇지 않다.
subscribe()
는 구독자를 호출하는 메서드로 실제 구독자는 메서드의 인자라고 할 수 있다.
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Flux;
@Slf4j
public class HelloReactor {
public static void main(String[] args) {
Flux<String> sequence = Flux.just("Hello", "Reactor");
sequence
.map(data -> data.toLowerCase())
.subscribe(data -> log.info(data));
}
}