인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

가보자!!님의 프로필 이미지

작성한 질문수

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

마블 다이어그램으로 Flux와 Mono 이해하기

Downstream Mono, Flux가 subscriber인가요?

작성

·

56

0

안녕하세요!

마블 다이어 그램을 보면 upstream Flux나 Mono는 코드상 Flux.just(), Mono.just()를 통해 직관적으로 생산자로 이해가 되는데! Downstream Flux, Mono는 무엇을 의미하는지 이해가 가지 않습니다. Subscriber라고 보면 될까요?

좋은 강의 감사합니다.^^

답변 1

0

Kevin님의 프로필 이미지
Kevin
지식공유자

안녕하세요? Downstream Flux, Mono에 대해서 질문을 주셨는데요.

아래 간단한 코드를 예로 들면(Mono도 같은 원리라고 보시면 됩니다.)

Flux
  .just(1, 2, 4)
  .filter(num -> num % 2 == 0)
  .subscribe(result -> System.out.println(result));

just()는 일반적으로 최초로 데이터를 emit하기 때문에 생산자, Publisher, 발행자로 이해하면 됩니다.

그런데 filter() 입장에서는 just()가 Upstream Flux가 되고, 반대로 just() 입장에서는 filter()가 Downstream Flux가 됩니다.

이렇게 부르는 이유는 just()와 filter() 같은 Operator들이 리턴하는 리턴 타입이 Mono 또는 Flux이기 때문입니다.

즉, filter() 입장에서는 윗쪽에 있는 just()가 리턴하는 Flux를 이용해서 다음 흐름을 이어가기 때문에 just()가 Upstream Flux가 되는 것입니다.

 

그리고 Subscriber는 내부적으로 좀 복잡한 과정을 거치는데 다 이해하실 필요는 없고, 일반적으로 .subscribe(...) 여기에서 ... 에 해당되는 람다 표현식이 Subscriber라고 이해하셔도 무방할 것 같습니다.

 

혹시 제 설명이 좀 어려우시다면 just()와 filter() 같은 Operator 내부로 들어가셔서 리턴 타입을 직접 눈으로 확인하시면 좋을 것 같아요.

 

감사합니다!