Marble Diagram이란?
Marble Diagram으로 Reactor의 Publisher 이해하기
Mono 마블 다이어그램
Mono.just("Hello Reactor")
.subscribe(System.out::println);
- RxJava
- Maybe
- 데이터를 0건 또는 1건만 emit하는 Publisher
- Single
- 데이터를 1건만 emit하는 Publisher
- ✅ Reactor에서는 Mono 하나로 다 제공하는 방식
Mono
.empty()
.subscribe(
none -> System.out.println("# emitted onNext signal"),
error -> {},
() -> System.out.println("# emitted onComplete signal")
);
empty()
Operator는 emit할 데이터가 없는 것으로 간주
- 곧바로 onComplete Signal을 전송
Flux 마블 다이어그램
- emit 되는 구슬 모양의 데이터가 여러 개!
Mono
- 0건 또는 1건만 emit 할 수 있는 Publisher 타입
Flux
- 여러 건의 데이터를 emit 할 수 있는 Publisher 타입
- Mono의 데이터 emit 범위를 포함한다고 볼 수 있음.
- 0건 또는 1건 이상의 데이터를 emit할 수 있기 때문이다
concatWith() 마블 다이어그램
- concatWith 함수
- 두 개의 데이터 소스를 연결해서 하나의 데이터 소스를 만든다.
- Publisher의 데이터 소스와 concatWith 내부에 있는 Publisher의 데이터 소스를 연결한다.
Flux<String> flux = Mono.justOrEmpty("Steve")
.concatWith(Mono.justOrEmpty("Jobs"));
flux.subscribe(System.out::println);
concat()
Flux.concat(
Flux.just("Mercury", "Venus", "Earth"),
Flux.just("Mars", "Jupiter", "Saturn"),
Flux.just("Uranus", "Neptune", "Pluto"))
.collectList()
.subscribe(System.out::println);
참고
ReactiveX - Single