Chapter06. Marble Diagram

김신영·2023년 7월 30일
0

Spring WebFlux

목록 보기
6/13
post-thumbnail
post-custom-banner

Marble Diagram이란?

  • Marble
    • 구슬

image

  • Source Flux
    • Upstream
  • Output Flux
    • Downstream

Marble Diagram으로 Reactor의 Publisher 이해하기

Mono 마블 다이어그램

image

Mono.just("Hello Reactor")
		.subscribe(System.out::println);

// Hello Reactor
  • 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")
    );

// # emitted onComplete signal
  • empty() Operator는 emit할 데이터가 없는 것으로 간주
    • 곧바로 onComplete Signal을 전송

Flux 마블 다이어그램

image

  • 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);

// Steve
// Jobs

image

concat()

Flux.concat(
        Flux.just("Mercury", "Venus", "Earth"),
        Flux.just("Mars", "Jupiter", "Saturn"),
        Flux.just("Uranus", "Neptune", "Pluto")) // Flux
.collectList() // Mono
.subscribe(System.out::println); // List 출력

참고

ReactiveX - Single

profile
Hello velog!
post-custom-banner

0개의 댓글