Reactor 공부하다가
공식문서나 인텔리제이에서 보여주는 Diagram 보게되는 경우가 많아서
보고도 이게 뭐지??? 싶은게 한 두개가 아니라서
드디어 공부해보려고 합니다.
Reactor 처리 흐름을 그림으로 나타낸 다이어그램
말그대로 시간의 흐름을 의미합니다, → 방향으로 진행합니다.
이벤트가 진행되고 있는 시간을 생각하면 될 것 같네요.
처리할 데이터 요소, Publisher가 Emit
하는 데이터
처음에는 가지각색 색깔, 도형 모양들이 있길래 많이 헷갈렸는데
색깔, 모양과 관계없이 모두 처리할 데이터 요소를 뜻합니다.
해당 타임라인 선 위에 데이터 모형이 존재하면 Emit
되었다고 합니다.
Publisher의 역할은 데이터를 방출시키는 역할을 합니다.
그러면 이 방출된 데이터를 읽을려면 Subscription 라는 행위를 해야합니다.
Subscription 예제 코드
String text = Mono.just("HelloWorld").subscribe();
물론 동기적으로 block()이라는 메소드를 통해서 데이터를 받을 수 있긴한데 최대한 안쓰는게 Reactor 목적이랑 맞지 않나 싶습니다.
Flux에만 있는 요소인데 Subscribe을 하고 나서 다음 데이터를 읽기 위해서는 onNext() 를 호출해서 읽을 수 있습니다.
데이터는 총 3가지 처리 과정이 존재합니다.
모든 데이터의 처리를 완료
처리 중에 에러가 발생한 상태로 종료
데이터가 계속 진행 중
보통 많이들 본 Marvel Diagram의 형태일 것 같은데요.
Operator는 저희가 많이쓰는 데이터 처리 메소드라고 생각하면 될 것 같습니다.
(flatMap, filter, map, concatMap 등등)
Operator 기준 위에 존재하는 타임라인이 Input 데이터를 의미하고
아래 존재하는 타임라인은 Output 데이터를 의미합니다.
Operator는 Input 데이터를 받아 데이터 처리를 진행하고 Output으로 넘겨주는 역할을 합니다.
Reactor는 Signal에 따라 특정 이벤트가 발생합니다.
Signal의 예로는 subscribe, cancel, request
등 데이터를 전체 가져오는 구독, 데이터를 더이상 가져오지 않는 취소, 데이터를 가져오는 요청 (이때 unbounded는 무한하게 요청을 의미합니다.)
Marvel Diagram을 볼 줄 몰라 공식문서를 봐도 대체 이게 무슨소리인지 하나도 몰랐는데
이제는 공식문서를 읽을 정도는 되어서 다행인 것 같습니다.
점점 Reactor에 대해서 깊이 공부하는 느낌이 들지만 ㅋㅋㅋㅋㅋㅋㅋ
나중에는 Kotlin의 Coroutine 빨리 쓰고 싶네요