본문 바로가기
Spring Boot(JAVA)

6. Reactive - Reactor Schedulers

by #Glacier 2024. 4. 5.
반응형

 

Reactor의 Scheduler는 비동기 작업을 관리하는데 사용된다.

 

Schedulers.immediate() : 현재 쓰레드에서 동기작업 실행

Schedulers.single() : 단일 백그라운드 쓰레드에서 작업 실행

Schedulers.parallel() : 병렬로 사용할 수 있는 별도 쓰레드 풀로 작업 실행 (CPU 개수)

Schedulers.boundedElastic() : 별도의 쓰레드로 그때 그때 맞게 유연하게 작업 실행 (쓰레드 개수의 제한은 있음)

 

public Flux<Integer> fluxMapWithSubscribeOn() {
    return Flux.range(1, 10)
            .map(i -> i * 2)
            .subscribeOn(Schedulers.boundedElastic())
            .log();
}

public Flux<Integer> fluxMapWithPublishOn() {
    return Flux.range(1, 10)
            .map(i -> i + 1)
            .publishOn(Schedulers.boundedElastic())
            .log()
            .map(i -> i * 2);
}

 

private Scheduler1 scheduler1 = new Scheduler1();

@Test
void fluxMapWithSubscribeOn() {
    StepVerifier.create(scheduler1.fluxMapWithSubscribeOn())
            .expectNextCount(10)
            .verifyComplete();
}

@Test
void fluxMapWithPublishOn() {
    StepVerifier.create(scheduler1.fluxMapWithPublishOn())
            .expectNextCount(10)
            .verifyComplete();
}

 

반응형