본문 바로가기
ReactiveX (Rx)

[RxJava] Cold Observable, Hot Observable에 대해 알아보자

by 안솝우화 2022. 3. 30.
반응형

Cold Observable 이란?

일반적으로 사용하는 Observable이 바로 Cold Observable이다

Subscribe(구독)할 때 데이터를 발행해줍니다 (여기서 말하는 Subscribe와 Subscriber은 다른 겁니다!!)

Cold 생산자는 1개의 소비자와 구독 관계를 맺기 때문에 생산자가 통지하는 데이터의 타임라인이 구독할 때 생성되고 처리가 시작됩니다

이름 그대로 cold라서 차갑게 얼어붙어있어 구독을 하면(녹이면) 데이터가 발행이 된다 이런 식으로 이해하시면 될 것 같습니다

 

Hot Observable 이란?

Hot Observable은 Cold Observable의 반대입니다, Cold Observable을 ConnectableObservable과 Subject를 이용해 Hot Observable로 전환할 수 있습니다

Hot Observable은 Observer의 존재와 관계없이 데이터를 전달하기 때문에 모든 데이터를 전부 받지 못할 수도 있습니다

Hot Observable은 생산자와 여러 소비자와 구독 관계를 갖게 되고 생산자에서 이미 생성하고 통지한 데이터 타임라인에 나중에 소비자가 참가를 할 수 있고 구독을 시작해도 처리가 시작되지 않을 수도 있습니다

 

  Hot Observable Cold Observable
구독 하나의 스트림을 여러번 구독 별도의 스트림을 각각 구독
데이터 구독한 시점부터 발행된 데이터를 받음 처음 발행한 데이터를 받음
사용 마우스 이벤트, 키보드 이벤트, 시스템 이벤트 등 일반적인 웹 요청, 데이터베이스 쿼리 등
관계 생산자가 여러 소비자와 구독 관계 생산자가 1개의 소비자와 구독 관계

 

ConnectableObservable과 Subject는 다음 글에서 다뤄보도록 하겠습니다!

반응형