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

+ Recent posts