본문 바로가기
2023년 이전/ReativeX

RxJava,RxKotlin - Observable (3) - Hot/Cold observable

by JeongUPark 2019. 10. 22.
반응형

[출처 - RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에]

본 글은 'RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에' 를 학습하면서 정리한 글입니다

(Kotlin code 들은 실행 보았지만, Java code는 따로 실행 해보진 않았습니다.)

 

Observable에는 Hot(뜨거운) Observable과 Cold(차가운) Observable이 있습니다.

 

뜨거운 Observable은 구독자의 여부와 관계없이 데이터를 발행합니다. 따라서 여러 구독자를 고려할 수 있습니다. 단, 구독자는 Observable에서 발생하는 데이터를 처음부터 모두 수신한다는 것을 보장 할 수 없습니다.

차가운 Observable은 Observable은 선언하고 just(), fromIterable() 함수를 호출해도 Observer가 subscribe()함수를 호출하여 구독하지 않으면 데이터를 발행하지 않습니다.

즉 차가운 Observable은 구독 하면 준비된 모든 데이터를 발행하고 뜨거운 Observable은 구독한 시점부터 Observable에서 발행한 데이터를 받습니다.

 

예를 들어 뜨거운 Observable은 마우스 이벤트, 키보드 이벤트로 볼 수 있고, 차가운 Observable은 웹 요청, 데이터베이스 쿼리 파일 읽기등 입니다.

 

그리고 뜨거운Observable의 주의점은 Observable에서 데이터 발행하는 속도와 구독자가 처리하는 속도와의 차이가 클때 발생하는 배압을 주의해야합니다

 

차가운 Observable에서 뜨거운 Oboservable로 객체 변환은 Subject 객체를 만들거나 ConnectableObservable 클래스를 활용하는 것입니다. 이 둘은 추 후 다루보도록 하겠습니다.

반응형