Page 33 -
P. 33
그래서 Cold 생산자를 구독하면 생산자 처리가 시작되지만, Hot 생산자는 구독해도 생산자 처리
가 시작되지 않을 수 있습니다. 또한, Hot 생산자의 경우 이미 처리를 시작한 생산자를 구독하면
소비자는 구독한 시점부터 데이터를 받게 되고, 같은 데이터를 여러 소비자가 받을 수도 있습니다. 1
RxJava에서 생성 메서드로 생성된 생산자는 기본으로 Cold 생산자입니다. Hot 생산자를 생성하
려면 Cold 생산자에서 Hot 생산자로 변환하는 메서드를 호출하거나 뒤에서 설명하는 Processor RxJava의 기본
와 Subject를 생성해야 합니다.
그리고 Hot Flowable/Observable로는 ConnectableFlowable/ConnectableObservable이
있는데, 이 둘은 Cold Flowable/Observable을 Hot 생산자로 변환하는 연산자를 통해 생성할
수 있습니다.
1.3.5 ConnectableFlowable/ConnectableObservable
ConnectableFlowable/ConnectableObservable은 Hot Flowable/Observable이며, 여러
Subscriber/Observer에서 동시에 구독할 수 있습니다. 또한, Cold와 달리 subscribe 메서드를
호출해도 처리를 시작하지 않고 connect 메서드를 호출해야 처리를 시작합니다. 그래서 처리를
시작하기 전에 여러 Subscriber/Observer에서 구독하게 하고 그 후 처리를 시작해 처음부터 동
시에 여러 구독자에게 데이터를 통지할 수 있습니다. 다시 말하면 connect 메서드를 호출할 때까
지 처리가 시작되지 않습니다. 따라서 ConnectableFlowable/ConnectableObservable을 다
루려면 connect 메서드를 반드시 호출해야 합니다.
ConnectableFlowable/ConnectableObservable은 처리를 시작하는 connect 메서
드 외에도 몇 가지 독자적인 메서드가 있으며, 해당 메서드들은 ConnectableFlowable/
ConnectableObservable에서 Flowable/Observable을 생성합니다.
Flowable/Observable로 변환하는 주요 메서드
refCount()
autoConnect()/autoConnect(int numberOfSubscribers)
refCount
refCount 메서드는 ConnectableFlowable/ConnectableObservable에서 새로운 Flowable/
Observable을 생성합니다. 이 Flowable/Observable은 이미 다른 소비자가 구독하고 있다면
041
RxJava 리액티브 프로그래밍(본문)최종.indd 41 2019-03-26 오전 11:26:31