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

Spring WebFlux Non-Blocking 방법

by 오늘도 코딩 2022. 11. 29.
728x90
반응형

Mono, Flux를 이용했다고 Non-Blocking이 되진 않는다.

*Thread Pool을 통해서도 가능

*WebClinet 생략

*자세한 설명 생략

 

 

▷ Reactor Thread 지정

* 동일한 Thread를 사용하지 않도록 Reactor에게 Thread 지정

 

종류 설명
subscribeOn() - 스트림을 구독할 때 동작을 지정한 Thread Pool에서 수행할 수 있도록 설정
*subscription process에 적용
publishOn() - publishOn 이전의 모든 것은 Main Thread에 의해 실행
*subscribeOn 과 유사하지만 중요한 차이점은 다운스트림에서 실행

- subscriber가 처리하는 부분인 onNext() / onComplete() / onError()를 지정한 Thread Pool에서 수행

 

 

▷ Reactor Schedulers

 

- Thread를 관리하는 관리자 역할(자동 관리)

- Non-Blocking을 위한 복잡한 Multithreading 프로세스를 단순하게 처리 가능

 

종류 설명
Schedulers.elastic() - 수행 시간이 오래 걸리는 Blocking 작업들에 적합
- Thread 개수 제한 없음
Schedulers.boundedElastic() - 수행 시간이 오래 걸리는 Blocking 작업들에 적합
- Thread 개수 제한
Schedulers.parallel()  - 수행 시간이 짧게 걸리는 Blocking 작업들에 적합
- Thread  Pool을 사용하여 병렬 작업
- Thread 개수 고정
Schedulers.single()  - Thread  Pool(Single Thread)을 생성하고 순차적으로 실행
Schedulers.immediate() - 현재 Thread에서 실행

 

 

▷ 참고

 

subscribeOn and publishOn operators in Project Reactor - Apps Developer Blog

We use the subscribeOn and publishOn operators for switching the execution context (Scheduler) in a reactive chain. In the previous lesson, we mentioned that the default behavior is that the same thread that performs a subscription will be used for the who

www.appsdeveloperblog.com

 

 

▷ 관련 글

 

Spring WebFlux 란?

* 자세한 설명 생략 ▷ WebFlux란? - Spring WebFlux는 Spring 5에서 새롭게 추가된 모듈 - Reactive-stack Web Framework이며 non-blocking의 reactive stream을 지원 - Flux와 Mono라는 두 종류의 Publisher와 Cold, Hot 방식 존재 -

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 > 개념 요약' 카테고리의 다른 글

Spring 이란?  (0) 2023.02.01
Sinks.many() 란?  (0) 2022.11.29
스레드 풀(Thread Pool) 이란?  (0) 2022.11.22
R2DBC 란?  (0) 2022.11.11
Gradle vs Maven  (0) 2022.11.09

댓글