티스토리 뷰

6.1 마블 다이어그램(Marble Diagram)이란?

  • 마블 : 구슬
  • IJ에서 확인 가능

6.2 마블 다이어그램으로 Reactor의 Publisher 이해하기 

  • Mono

    • Mono[1] : 데이터 한 건을 emit하는 경우

        public static void main(String[] args) {
            Mono.just("Hello Reactor")
                    .subscribe(System.out::println);
        }
      
        > Hello Reactor
    • Mono[0] : 데이터를 전달받을 필요는 없지만 작업이 끝났음을 알리고 이에 따른 후처리를 하고 싶을 때

        public static void main(String[] args) {
            Mono
                .empty()
                .subscribe(
                        none -> System.out.println("# emitted onNext signal"), // onNext Signal
                        error -> {}, // onError Signal
                        () -> System.out.println("# emitted onComplete signal") // onComplete Signal
                );
        }
      
        > # emitted onComplete signal
  • Flux

          public static void main(String[] args) {
          Flux.just(6, 9, 13)
                  .map(num -> num % 2)
                  .subscribe(System.out::println);
          }
    
          > 0
          > 1
          > 1
  • Quiz

          public static void main(String[] args) {
              Flux.concat(
                              Flux.just("Mercury", "Venus", "Earth"),
                              Flux.just("Mars", "Jupiter", "Saturn"),
                              Flux.just("Uranus", "Neptune", "Pluto"))
                      .collectList()
                      .subscribe(planets -> System.out.println(planets));
          }
    1. concat() Operator에서 리턴하는 Publisher는 Mono일까요? Flux일까요?
    2. collectList() Operator에서 리턴하는 Publisher는 Mono일까요? Flux일까요?
    3. 최종적으로 출력되는 데이터의 형태는 무엇일까요?
댓글