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
'▶ 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 |
댓글