안녕하세요. 메로나입니다.
오늘은 Reative Streams를 공부하겠습니다.
Reative Streams 공부하기 전에는 매우 어렵게 느껴졌는데 공부해 보니 쉽더라고요.
! 단어를 통일합시다!
- 생산자: 데이터를 생산
- 통지: 데이터를 보냄
- 소비자: 데이터를 받음
- 소비: 받은 데이터를 처리함.
Reative Streams 란?
- 비동기 데이터 처리와 흐름 제어를 다루기 위한 표준
- Reative Programing 인터페이스만 제공합니다.
- Publisher, Subscriber, Subscription, Processor라는 4가지의 인터페이스를 제공합니다.
인터페이스 정의
Publisher: 데이터를 생산하고 보냅니다.(소비자)
SubScriber: 통지된 데이터를 전달받아서 처리합니다.(생산자)
SubScription: 전달받을 데이터의 개수를 요청하고 구독을 해지합니다.(소비자 - 생산자 연결)
Processor: Publisher, SubScriber의 기능을 모두 가지고 있습니다. (중간에서 데이터를 처리하거나 변환)

Publisher
Publisher는 두 가지의 종류가 있습니다.
Cold와 Hot으로 나누어져 있으며, 각각의 역할이 다릅니다.
Cold Publisher
- 생산자는 소비자가 구독할 때마다 데이터를 처음부터 새로 통지합니다.
- 데이터를 통지하는 새로운 타임라인이 생성합니다.
- 소비자는 구독 시점과 상관없이 통지된 데이터를 처음부터 전달 받을 수 있습니다.

Hot Publisher
- 생산자는 소비자와 상관없이 데이터를 한 번만 통지합니다.
- 즉 데이터를 통지하는 타임 라인은 하나입니다.
- 소비자는 발행된 데이터를 처음부터 전달받는 게 아니라 구독한 시점에 통지된 데이터만 전달받을 수 있습니다.

Publisher 비유
Cold Publisher는 돈을 주고 보는 강좌와 같습니다. 돈을 주고 듣고 싶은 강의를 들으면 처음부터 볼 수 있는 것과 비슷한 개념 같습니다.
Hot Publisher는 잡지를 구독하여 보는 것과 비슷합니다. 1~12월 중 3월에 잡지를 구독하여 받아본다면 1월, 2월의 잡지는 못 보고 3월 잡지부터 볼 수 있다는 것과 비슷한 개념 같습니다.
참고문헌
https://github.com/reactive-streams/reactive-streams-jvm
GitHub - reactive-streams/reactive-streams-jvm: Reactive Streams Specification for the JVM
Reactive Streams Specification for the JVM. Contribute to reactive-streams/reactive-streams-jvm development by creating an account on GitHub.
github.com
'RxJava' 카테고리의 다른 글
| [RxJava] 생성 연산자 (0) | 2025.01.30 |
|---|---|
| [RxJava] Single vs Maybe vs Completable (0) | 2025.01.27 |
| [RxJava] Flowable과 Observable의 차이점 (0) | 2025.01.23 |
| [RxJava] 마블 다이어그램 (0) | 2025.01.19 |
| [RxJava] 리액티브 프로그래밍 (0) | 2025.01.19 |
