728x90
반응형
* 자세한 설명 생략
▷ WebFlux란?
- Spring WebFlux는 Spring 5에서 새롭게 추가된 모듈
- Reactive-stack Web Framework이며 non-blocking의 reactive stream을 지원
- Flux와 Mono라는 두 종류의 Publisher와 Cold, Hot 방식 존재
- WebFlux는 WebClient를 포함하고 있고 Spring MVC 기반으로 Rest Template을 WebClient로 사용 가능
▷ Spring MVC vs Spring WebFlux
Spring MVC | Spring WebFlux |
Servlet Stack | Reactive Stack |
Blocking : 처리결과를 기다림 | Non-Blocking : 처리결과를 기다리지 않음 |
동기(Synchronous) : 요청과 응답이 동시에 일어남 | 비동기(Asynchronous) : 요청과 응답이 동시에 일어나지 않음 |
▷ WebFlux Publisher
*Reactive Streams Publisher 구현체
Flux | Mono |
0 ~ N개의 데이터 전달 | 0 ~ 1개의 데이터 전달 |
여러 서비스(비동기)에 대한 각각의 결과 모음 | 하나의 서비스에 대한 하나의 결과 |
▷ WebFlux Hot / Cold Publisher
*WebFlux는 일반적으로 Cold 방식으로 동작
Hot | Cold |
subscribe와 무관하게 즉시 데이터 발행과 동작 가능한 방식 | subscribe를 하기 전에는 아무런 동작을 하지 않는 방식 |
subscribe를 하면 매번 미리 생성해 둔 데이터로 동작 | subscribe를 하면 매번 새로운 데이터를 발행하고 동작 |
▷ WebFlux Publisher 주요 함수
종류 | 설명 |
just() | - 단순 String을 전달하는 Method - subscribe()를 하기 전에는 아무런 동작 안 함 |
onErrorReturn() | - 오류 발생 시 지정된 fallbackValue 출력 |
timeout() | - timeout 발생 시 fallback 실행 |
map() | - A를 B로 바꿈(1:1) → 동기 |
flatMap() | - A의 스트림을 다른 크기로 된 B의 스트림으로 바꿈(1:N) → 비동기 |
▷ 관련 글
728x90
728x90
'▶ Back-End > 개념 요약' 카테고리의 다른 글
R2DBC 란? (0) | 2022.11.11 |
---|---|
Gradle vs Maven (0) | 2022.11.09 |
MQTT 란? (0) | 2022.11.07 |
리눅스 권한(Permission) 설정(8진수 표기) (0) | 2021.02.17 |
리눅스 파일 속성 (0) | 2021.02.17 |
댓글