Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
패스트캠퍼스 환급챌린지 10일차 미션 (2월 10일) : Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기 본문
패스트캠퍼스
패스트캠퍼스 환급챌린지 10일차 미션 (2월 10일) : Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기
slow-walker 2024. 2. 10. 22:48
1. Reactive streams 구현 라이브러리
- Project reactor
- RxJava
- Mutiny
publisher의 경우 구현 라이브러리에 따라 많이 달라진다.
- Project reactor는 스프링 webflux에서 기반이 되는 라이브러리이다.
- RxJava는 넷플리스에서 만들었고, Rx를 Java형태로 포팅해서 제공하는 라이브러리이다
- 처음 시작이 C#이었는데, Rxjs, RxRuby등으로 지원한다
- Mutiny는 하이버네이트 리액티브로서 만들어졌다.
2-1. Project reactor
- Pivotal사에서개발
- Spring reactor에서 사용
- Mono와 Flux publisher 제공
2-2 Project reactor - Flux
![](https://blog.kakaocdn.net/dn/p2NrN/btsELsh4FGX/gyk2bBycTKoALYcmBrVKx1/img.png)
- 0..n개의 item을 전달
- 에러가 발생하면 error signal 전달하고 종료
- 모든 item을 전달했다면 complete signal 전달
- 하고 종료
- backPressure 지원
2-3 Project reactor - Mono
- 0..1개의 item을 전달
- 에러가 발생하면 error signal 전달하고 종료
- 모든 item을 전달했다면 complete signal 전달
- 하고 종료
2-4 Flux에서 하나의 값만 넘겨주면 되는데 왜 Mono를 사용할까?
- 1개의 item만 전달하기 때문에 next하나만 실행하면 complete가 보장
- 혹 은전달하지 않고 complete를 하면 값이 없다는것을 의미
- 하나의 값이 있거나 없다
2-5. Mono와 Flux
- Mono<T>: Optional<T>
- 없거나 혹은 하나의 값
- Mono<Void>로 특정 사건이 완료되는 시점을 가리킬 수도 있다
- Flux<T>: List<T>
- 무한하거나 유한한 여러 개의 값
2-6. Flux를 Mono로
- Mono.from으로 Flux를 Mono로
- 첫번째값만전달
- collectList()
- Flux의 값들을 collect하고 complete이벤트가 발생하는 시점에 모은 값들을 전달
2-7. Mono를 Fluxfh
- flux()
- Mono를 next한번 호출하고 onComplete를 호출하는 Flux로 변환
- flatMapMany
- Mono의 값으로 여러 개의 값을 전달하는 Flux를 만들고 연결
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. https://bit.ly/48sS29N