[section 4] Spring Web Flux(2) - Project Reactor

수경·2023년 1월 29일
0

코드스테이츠

목록 보기
50/57

Project Reactor

리액티브 스트림즈 구현체

특징

  1. 완전한 Non-Blocking 통신 지원 ➡️ MSA 구조에 적합

  2. Publish Type으로 Mono[0|1], Flux[N] 지원

  3. Backpressure: Subsciber의 처리속도가 Publisher의 emit 속도를 따라가지 못할 때 적절하게 제어하는 전략


Marble Diagram

마블: 하나의 데이터, 다이어그램에서 변화하는 데이터의 흐름을 표현

Mono의 마블 다이어그램

Flux의 마블 다이어그램

Operator의 마블 다이어그램 (map)


Scheduler

복잡한 멀티스레딩 프로세서를 단순하게 해주는 역할, 전용 Operator를 제공

subscribeOn()

구독 직후 스레드 한 개 생성 및 변경
➡️ emit하는 publisher의 실행 스레드를 지정하는 역할
❗️여러번 추가해도 한 개의 스레드만 생성 및 변경됨

publishOn()

데이터를 가공하는 operator 앞에 추가해서 실행하는 쓰레드를 별도로 추가 및 변경
❗️추가할 때마다 추가, 변경됨


Operators

엄청 많음..........

새로운 sequence 생성

  • fromStrem()
  • fromIterable()
  • create()

기존 sequence에서 변환 작업이 필요한 경우

  • map()
  • flatMap()
  • concat()
  • zip()

Sequence 내부의 동작을 확인(Peeking)하고자 할 경우

  • doOnNext()
  • log()

Sequence에서 데이터 필터링(Filtering)이 필요한 경우

  • filter()
  • take()

에러를 처리(Handling errors)하고자 할 경우

  • error()
  • timeout()
  • retry()
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글