본문 바로가기
▶ Back-End/개념 요약

Spring WebFlux 란?

by 오늘도 코딩 2022. 11. 8.
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) → 비동기

 

 

▷ 관련 글

 

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

 

 

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

댓글