Marble Diagram이란?
![image](https://user-images.githubusercontent.com/39241588/128735689-018a61bb-73ea-4d9c-a730-1c99ae6d76da.png)
Marble Diagram으로 Reactor의 Publisher 이해하기
Mono 마블 다이어그램
![image](https://velog.velcdn.com/images/bimilless/post/085e0662-d909-45ad-a245-854b10ded707/image.png)
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 마블 다이어그램
![image](https://velog.velcdn.com/images/bimilless/post/ba3c0959-0eb1-4709-a759-18c0ee482d04/image.png)
- 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);
![image](https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Single.concatWith.png)
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