본문 바로가기

RxJava

[RxJava] Reative Streams

안녕하세요. 메로나입니다.

 

오늘은 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

  • 생산자는 소비자가 구독할 때마다 데이터를 처음부터 새로 통지합니다.
  • 데이터를 통지하는 새로운 타임라인이 생성합니다.
  • 소비자는 구독 시점과 상관없이 통지된 데이터를 처음부터 전달 받을 수 있습니다.

cold publisher

 

Hot 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