subscribeOn
이건 스레드풀(스케줄러) 바꿔줄때 쓰는건데 여러번 해도 코드기준 처음지정해준걸로 고정된다.
Flux.interval(Duration.ofSeconds(10))
.map(…)
.subscribeOn(Schedulers.elastic()) // A
.map(…)
.subscribeOn(Schedulers.parallel()) // B
.subscribe();
A로 고정, B는 무시
만약 중간중간에 스레드풀을 바꾸고 싶다면 publishOn을 써야한다.
Flux.interval(Duration.ofSeconds(10))
// (1) 최초 ticker 신호 발행: Reactor 내장 타이머 스케줄러 (예: parallel())
.publishOn(Schedulers.boundedElastic())
// (2) 이제부터 아래 연산(map, flatMap 등)을 boundedElastic 스레드에서 실행
.map(ignore -> loadWidgetPerformanceByPcidData())
.publishOn(Schedulers.parallel())
// (3) 여기 아래 연산은 parallel() 스레드에서 실행
.map(result -> {
// 예: 결과를 DB에 저장하거나 metrics를 찍는 작업
recordMetric(result);
return result;
})
.subscribe();반응형
'Programming > SpringBoot' 카테고리의 다른 글
| WebSocket (1) | 2025.05.22 |
|---|---|
| Spring에서 graphQL적용하기 (0) | 2023.10.13 |
| Spring에서 gRPC연동하기 (2) | 2023.10.11 |
| maven dependency (0) | 2023.10.11 |
| Spring Boot에서 endpoint접근을 http에서 https로 변경하기 (0) | 2023.10.09 |
