본문 바로가기

Pattern/Funtional

RxJava Publisher, Subscriber

반응형

Reactive Streams은 데이터를 만들어 통지하는 Publisher와 통지된 데이터를 받아 처리하는 Subscriber로 구성된다. Subscriber가 Publisher를 구독하면 Publisher가 통지한 데이터를 Subscriber가 받을 수 있다.

  • Publisher : 데이터를 통지하는 생산자
  • Subscriber 데이터를 받아 처리하는 소비자 

 

Publisher가 데이터를 통지하고 SubScriber는 데이터를 받을때까지의 흐름

1. Publisher의 통지 준비

2. Subscriber에게 통지

3. Subscriber는 받고자하는 데이터 개수를 요청(만약 데이터 개수를 요청하지 않으면 생성자는 요청을 기다리는 상태이므로 통지를 시작할 수 없음)

4. Publisher는 데이터를 만들어 Subscriber에게 통지

5. Subscriber는 받은 데이터를 사용해 처리 작업 수행

6. PublisherSubscriber에게 요청받은 만큼의 데이터를 통지한 뒤 다음 요청이 올때까지 데이터 통지를 중단

7. Subscriber가 처리 작업을 완료하면 다음에 받을 데이터 개수를 생산자에 요청

8. Publisher는 소비자에 모든 데이터를 통지하고 마지막으로 데이터 전송이 완료돼 정상 종료됐다고 통지

 

Reactive Streams가 제공하는 프로토콜

프로토콜 설명
onSubscribe 데이터 통지가 준비됐음을 통지
onNext 데이터 통지
onError 에러(이상 종료) 통지
onComplete 완료(정상 종료) 통지

 

Reactive Streams 인터페이스

인터페이스 설명
Publisher 데이터를 생성하고 통지하는 인터페이스
Subscriber 통지된 데이터를 전달받아 처리하는 인터페이스
Subscription 데이터 개수를 요청하고 구독을 해지하는 인터페이스
Processor Publisher와 Subscriber의 기능이 모두 있는 인터페이스
반응형

'Pattern > Funtional' 카테고리의 다른 글

RxJava 연산자  (0) 2021.07.28
Flowable과 Observable  (0) 2021.07.26
Reactive Streams  (0) 2021.07.26
Single, Maybe, Completable  (0) 2021.06.17