ParallelFlux
2024-04-23
병렬 flux
Flux.fromIterable(illits)
.parallel(3) // 작업을 3개의 레일로 나누기
.runOn(Schedulers.newParallel("아일릿 최고 - ", 3)) // 지정된 3개의 스레드
.subscribe(i -> logger.info("next {}", i));
Flux.parallel를 사용해 Flux를 ParallelFlux로 만들어버린다.
- 작업을 레일 단위로 나누는데 라운드 로빈 방식을 사용해 나눈다.
ParallelFlux.runOn을 사용해 다중 스레드를 사용하는 스케줄러에 전달해줘야 병렬로 처리 가능하다.
- 위 코드는 3개의 스레드를 사용하는 parallel 스케줄러에 전달해 동시에 3개의 레일로부터 오는 작업을 처리