W2AS2L
2023. 7. 24. 00:23
2023. 7. 24. 00:23
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를 하면 값이 없다는 것을 의미한다.
- 하나의 값이 있거나 없다
- 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만 전달
- 값이 아닌 사건을 전달