Cold Observable
Observable을 선언하고 just(), fromlterable() 함수를 호출해도 옵저버가 subscribe() 함수를 호출하여 구독하거나 Hot Observable로 변환되지 않으면 데이터를 발행하지 않습니다. 다른 말로 게으른 접근법이라고도 합니다. 즉, 차가운 Observable은 구독자가 구독하면(Subscribe) 준비된 데이터를 처음부터 발행합니다.
Observable, Single, Maybe는 Cold Observable이라고 할 수 있습니다.
Subject 객체를 만들거나 ComiectableObservable 클래스를 활용하는 것으로 Hot Observable 객체로 변환이 가능합니다.
- 자발적으로 아무것도 하지 않는 수동적인 Observable
- Observer가 Subscribe 된 다음 데이터를 처리한다.
- 스트림의 전후를 그냥 연결만 합니다. 스트림을 분기시키는 기능은 없습니다.
Hot Observable
Rx 스트림은 기본적으로 Subscribe가 된 순간에 각 오퍼레이터의 작동이 시작하게 되어 있습니다. 하지만 뜨거운 Observable은 구독자가 존재 여부와 관계없이 데이터를 발행하는 Observable입니다. 따라서 여러 구독자를 고려할 수 있습니다. 단, 구독자로서는 Observable에서 발행하는 데이터를 처음부터 모두 수신할 것으로 보장할 수 없습니다. 구독한 시점부터 Observable에서 발행한 값을 받습니다.
뜨거운 Observable에는 주의할 점이 있습니다. 배압을 고려해야 한다 는 점입니다. 배압은 Observable에서 데이터를 발행하는 속도와 구독자가 처리하는 속도의 차이가 클 때 발생합니다.
하지만 Hot Observable을 스트림 중간에 끼우는 것으로, Subscribe 이전에 스트림을 실행시킬 수 있다는 특징들을 가지고 있습니다.
- 자신이 값을 발행하는 능동적인 Observable
- 후속 Observer의 존재에 관계없이 메시지를 발행한다.
- 자신보다 상류의 Cold Observable을 시작하고 값의 발행을 요구하는 기능을 가집니다.
- 하류의 Observer를 모두 묶어, 정리해 같은 값을 발행합니다. ( 스트림을 분기시킵니다.)
- 대표적 Subject 종류 입니다.
[ 출처 : RxJava 프로그래밍 ]
'Domain > ReactiveX' 카테고리의 다른 글
[ReactiveX] ConnectableObservable (0) | 2021.04.29 |
---|---|
[ReactiveX] Subject (0) | 2021.04.29 |
[ReactiveX] Maybe (0) | 2021.04.29 |
[ReactiveX] Single (0) | 2021.04.29 |
[ReactiveX] Observable (0) | 2021.04.29 |
댓글