* 자세한 설명 생략
▷ 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) → 비동기 | 
▷ 관련 글
Spring WebFlux Non-Blocking 방법
Mono, Flux를 이용했다고 Non-Blocking이 되진 않는다. *Thread Pool을 통해서도 가능 *WebClinet 생략 *자세한 설명 생략 ▷ Reactor Thread 지정 * 동일한 Thread를 사용하지 않도록 Reactor에게 Thread 지정 종류 설명
coding-today.tistory.com
SpringBoot에서 MQTT Client + WebFlux 구축
WebFlux를 적용한 MQTT Client를 구축하고 Topic 메시지 도착 시 Callback으로 Bean을 통해 서비스 구분 *Mqtt Broker(mosqitto) 아래 관련 글 참고 *자세한 설명 생략 ▷ Project 전체 구조 *파일 이름으로 검색 가능
coding-today.tistory.com
'▶ 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 | 
 
 
 
댓글