Reactor에서 ConnectableFlux로 Hot 스트림 만들고 publishOn으로 스레드 제어하기
·2018.05.29 00:00
핵심 내용
Reactor에서 ConnectableFlux를 사용해 Cold 스트림을 Hot으로 변환하고, 분기된 연산자의 스레드 전환은 subscribeOn 대신 publishOn을 사용해 제어하는 패턴을 소개한다.
자세히 보기
원문은 과일바구니 예제를 통해 하나의 스트림에서 여러 연산(distinct, count 등)을 수행할 때의 효율성 문제를 다룬다. 초기에는 각 연산에 subscribeOn(Schedulers.parallel())을 적용했으나, 이는 소스 스트림을 중복 순회하게 만들고 데몬스레드 종료 문제를 유발할 수 있다. 이를 해결하기 위해 Flux.fromIterable의 결과를 publish().autoConnect(2)를 통해 ConnectableFlux(Hot)로 변환하여 소스 스트림을 한 번만 순회하도록 한다. 이후 분기된 각 연산 스트림에서는 subscribeOn이 아닌 publishOn을 사용하여 해당 연산자 이후의 스레드만 전환함으로써, 소스 구독은 유지하면서 병렬 처리가 가능하도록 스레드 컨텍스트를 제어하는 방법을 설명한다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.