Reactive streams 구현 라이브러리

  • Project reactor
  • RXJava
  • Mutiny

Project reactor

  • Pivotal 사에서 개발
  • Spring reactor에서 사용
  • Mono와 Flux publisher 제

Project reactor - Flux

  • 0..n개의 item을 전달
  • 에러가 발생하면 error signal 전달하고 종료
  • 모든 item을 전달했다면 complete signal 전달하고 종료
  • backPressure 지원

Project reactor - Mono

  • 0..1개의 item을 전달
  • 에러가 발생하면 error signal 전달하고 종료
  • 모든 item을 전달했다면 complete signal 전달하고 종료

Flux에서 하나의 값만 넘겨주면 되는데 Mono가 필요한가?

  • Mono는 1개의 item만 전달하기 때문에 next 하나만 실행하면 complete가 보장된다.
  • 혹은 전달하지 않고 complete를 하면 값이 없다는 것을 의미한다.
  • 하나의 값이 있거나 없다
    • Optinal
  • Mono<T> : Optinal<T>
    • 없거나 혹은 하나의 값
    • Mono<Void>로 특정 사건이 완료되는 시점을 가리킬 수도 있다.
  • Flux<T> : List<T>
    • 무한하거나 유한한 여러개의 값

RxJava

  • Netflix 에서 개발
  • 닷넷 프레임워크를 지원하는 Reactive Extensions를 포팅
  • Flowable, Observable, Single, Maybe, Completable, publisher 제공

RxJava - Flowable

  • 0..n개의 item을 전달
  • 에러가 발생하면 error signal을 전달하고 종료
  • 모든 item을 절달했다면 complete signal 전달하고 종료
  • backPressure 지원
  • Reactor의 Flux와 유사

RxJava - Observable

  • 0..n개의 item을 전달
  • 에러가 발생하면 error signal을 전달하고 종료
  • 모든 item을 절달했다면 complete signal 전달하고 종료
  • backPressure 지원X

RxJava - Single

  • 1개의 item을 전달 후 바로 onComplete signal 전달
  • 1개의 item이 없다면 onError signal 전달
  • 에러가 발생했다면 onError signal 전달

RxJava - Maybe

  • 1개의 item을 전달 후 바로 onComplete signal 전달
  • 1개의 item이 없어도 onComplete signal 전달 가능
  • 에러가 발생했다면 onError singal 전달
  • Reactor의 Mono와 유사

RxJava - Completable

  • onComplete 혹은 onError signal만 전달
  • 값이 아닌 사건을 전달

'웹프로그래밍 > WebFlux' 카테고리의 다른 글

Reactive Programming  (0) 2023.07.21
Reactive manifesto  (0) 2023.07.05
CompletionStage 인터페이스  (0) 2023.07.03
Future 인터페이스  (0) 2023.06.13
blocking과 non-blocking의 차이(I/O 관점)  (0) 2023.06.12

+ Recent posts