- 리액티브 프로그래밍 라이브러리의 표준 사양이다.
- 리액티브 프로그래밍에 대한 인터페이스만 제공한다.
- RxJava는 이 Reactive Streams의 인터페이스들을 구현한 구현체이다.
- RxJs, RxKotlin, RxSwift …
- Reactive Stream는 Publisher, Subscriber, Subscription, Processor 라는 4개의 인터페이스를 제공한다.
Publisher
- 데이터의 발행자, 생성자
- 데이터를 생성하고 통지한다.
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
Subscriber
- 구독자, 소비자
- 통지된 데이터를 전달받아서 처리한다.
public interface Subscriber<T> {
public void onSubscribe(Subscription s);
public void onNext(T t);
public void onError(Throwable t);
public void onComplete();
}
Subscription
- 전달 받을 데이터의 개수를 요청하고 구독을 해지한다.
public interface Subscription {
public void request(long n);
public void cancel();
}
Processor
- Publisher와 Subscriber의 두 기능을 가질 수 있다.
public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {
}
Publisher와 Subscriber간의 프로세스 흐름