서론
RxJava2의 Observable이 무엇인지, Stream의 구현체의 종류는 어떤 것이 있는지, Dispsable 객체는 무엇인지에 대해서 알아봅니다.
📚 TL; DR
📖 General
- RxJava2 에서는, Stream의 구현체로 여러 종류를 만들어 놓았다.
- RxJava2 속의 Stream의 구현체로는 Observable / Single / Flowable / Completable / Maybe 가 있다.
- 각 Stream 구현체마다 용도별로 방출하는 event가 다르며, 용도에 맞게 사용하면 된다.
📖 배압
- 관찰 대상이 이벤트를 발행하는 속도가 구독자가 이벤트를 처리하는 속도보다 현저히 빠를 경우, 관찰 대상이 발행하는 이벤트를 구독자가 제대로 처리하지 못하는 이슈
- 이에 대한 내용은, 추후 multi threading 포스팅 이후에 다시 다룰 예정
📖 Observable
- Stream에서 item을 1개 이상 발행 할 수 있는 Stream의 구현체
- Android에서는, Flowable 대신에 Observable을 사용하는 경우가 잦음 ( Docs : link )
📖 Flowable
- Stream에서 item을 1개 이상 발행 할 수 있는 Stream의 구현체
- 배압 이슈가 발생 했을 때, 배압 이슈를 어떻게 처리 할 것인지에 대한 전략을 미리 선언 해 놓을 수 있음
- 대량의 I / O 작업이 있는 경우, 비동기 작업을 대량으로 처리 해야 하는 경우에 사용 ( Docs : link )
📖 Single
- Stream에서 item을 하나만 발행 할 수 있는 Stream의 구현체 ( 단발성 이벤트 )
- Network 통신, DB 작업 등 작업이 단발성으로 진행 될 때 주로 사용