Reactor Marvel Diagram

Panda·2024년 2월 27일
0

Spring

목록 보기
42/45

Reactor 공부하다가
공식문서나 인텔리제이에서 보여주는 Diagram 보게되는 경우가 많아서

보고도 이게 뭐지??? 싶은게 한 두개가 아니라서
드디어 공부해보려고 합니다.

Marvel Diagram

Reactor 처리 흐름을 그림으로 나타낸 다이어그램

Timeline


말그대로 시간의 흐름을 의미합니다, → 방향으로 진행합니다.
이벤트가 진행되고 있는 시간을 생각하면 될 것 같네요.

Element


처리할 데이터 요소, Publisher가 Emit 하는 데이터
처음에는 가지각색 색깔, 도형 모양들이 있길래 많이 헷갈렸는데
색깔, 모양과 관계없이 모두 처리할 데이터 요소를 뜻합니다.
해당 타임라인 선 위에 데이터 모형이 존재하면 Emit 되었다고 합니다.

Subscription


Publisher의 역할은 데이터를 방출시키는 역할을 합니다.
그러면 이 방출된 데이터를 읽을려면 Subscription 라는 행위를 해야합니다.

Subscription 예제 코드
String text = Mono.just("HelloWorld").subscribe();

물론 동기적으로 block()이라는 메소드를 통해서 데이터를 받을 수 있긴한데 최대한 안쓰는게 Reactor 목적이랑 맞지 않나 싶습니다.

onNext


Flux에만 있는 요소인데 Subscribe을 하고 나서 다음 데이터를 읽기 위해서는 onNext() 를 호출해서 읽을 수 있습니다.

Terminal

데이터는 총 3가지 처리 과정이 존재합니다.

  • Complete

모든 데이터의 처리를 완료

  • Error

처리 중에 에러가 발생한 상태로 종료

  • Process

데이터가 계속 진행 중

Input, Operator, Output 구조

보통 많이들 본 Marvel Diagram의 형태일 것 같은데요.
Operator는 저희가 많이쓰는 데이터 처리 메소드라고 생각하면 될 것 같습니다.
(flatMap, filter, map, concatMap 등등)

Operator 기준 위에 존재하는 타임라인이 Input 데이터를 의미하고
아래 존재하는 타임라인은 Output 데이터를 의미합니다.
Operator는 Input 데이터를 받아 데이터 처리를 진행하고 Output으로 넘겨주는 역할을 합니다.

Signal

Reactor는 Signal에 따라 특정 이벤트가 발생합니다.
Signal의 예로는 subscribe, cancel, request 등 데이터를 전체 가져오는 구독, 데이터를 더이상 가져오지 않는 취소, 데이터를 가져오는 요청 (이때 unbounded는 무한하게 요청을 의미합니다.)

느낀 점

Marvel Diagram을 볼 줄 몰라 공식문서를 봐도 대체 이게 무슨소리인지 하나도 몰랐는데
이제는 공식문서를 읽을 정도는 되어서 다행인 것 같습니다.

점점 Reactor에 대해서 깊이 공부하는 느낌이 들지만 ㅋㅋㅋㅋㅋㅋㅋ

나중에는 Kotlin의 Coroutine 빨리 쓰고 싶네요

참고

profile
실력있는 개발자가 되보자!

0개의 댓글