Reactor 3 Reference Guide

Reactive Stream은 비동기 데이터 스트림 처리를 위한 일종의 표준화된 스펙을 말한다.

이런 스택을 구현한 것이 Project Reactor고 플럭스에서 전반적으로 리액터를 활용함으로서 웹 요청에 대한 비동기 처리를 진행하게 된다.

Reactive Stream은 비동기 실행 데이터 처리와 논블로킹 백프레셔에 대한 표준을 제공하고 있다.

Untitled

1. Reactive Stream

Reactive Stream에 대한 구성 요소는 크게 4가지로 나뉜다.

1.1. stream

Untitled

subscriber는 publisher에게 구독(subscribe)을 진행하고, 이 과정에서 subscription 객체를 통해 publisher와 연결되게 된다.(구독 관계)

//publisher는 subscribe 메서드를 구현
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); // Subscriber가 처리 가능한 수준을 조절
	public void cancel(); //구독 관계 취소
}
//Processor
public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {}

1.2. asynchronous

Untitled

Reactive Stream은 비동기 처리가 가능하다는 특징도 갖고 있다.

데이터 처리 단계에서 같은 스레드나 별도의 스레드로 동작시킬 수 있고, 병렬 처리도 가능하다.

1.3. back pressure