본문 바로가기
ReactiveX (Rx)

[RxJava] 생산자와 소비자, 데이터 스트림이란? (Observable, Observer, Flowable, Subscriber)

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

이번 글을 자주 나오는데 자꾸 헷갈려서 정확한 개념 정리를 위해 만들게 되었습니다
저만 헷갈린 거 아니죠?ㅎ;;

 

먼저 RxJava는 기본적으로 데이터를 만들고 발행하는 생산자와 발행된 데이터를 받고 처리하는 소비자로 구성되어 있습니다

생산자는 데이터 스트림의 데이터들을 발행하는 역할을 합니다, 생산자를 소비자가 구독하게 되어 생산자가 발행하는 데이터를 소비자가 받을 수 있게 됩니다

그럼 여기서 데이터 스트림과 소비자는 무엇일까요?

먼저 데이터 스트림은 데이터나 이벤트가 들어오는 통로입니다 (데이터가 흐르는 강이라고 비유할 수 있겠네요)
소비자는 말 그대로 생산자의 데이터를 사용하는 주체입니다

 

이름 내용
생산자 데이터 스트림의 데이터를 발행하는 역할
소비자 생산자의 데이터를 사용하는 주체
데이터 스트림 데이터나 이벤트가 들어오는 통로

보기좋게 표로 정리해 봤습니다

 

여기까진 기본적인 내용입니다. 하지만 저는 지금까지 옵저버블이 생산자고 옵서버가 소비자인 줄 알았습니다, 그런데 어느 정도는 비슷했지만 꼭 옵저버블이나 옵서버가 생산자나 소비자가 아니었습니다...! (두둥탁..)

 

지원 여부 생산자 소비자
Reactive Streams 지원 Flowable Subscriber
Reactive Streams 미지원 Observable Observer

 

이것 외에도 Single, Maybe 등등이 더 있는데 Observable의 파생형입니다

반응형