Publisher : 데이터를 만들어 통지하는 생산자Subscriber : 데이터를 받아 처리하는 소비자Publisher와 Subscriber는 아래 4개의 프로토콜로 데이터를 통지함
onSubscribe : 데이터 통지가 준비됐음을 통지onNext : 데이터 통지onError : 에러(이상 종료) 통지onComplete : 완료(정상 종료) 통지[이미지 1] reactive-streams-1.0.3.jar 내 인터페이스
Publisher : 데이터를 생성하고 통지package org.reactivestreams;
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
Subscriber : 통지된 데이터를 전달받아 처리package org.reactivestreams;
public interface Subscriber<T> {
public void onSubscribe(Subscription s);
public void onNext(T t);
public void onError(Throwable t);
public void onComplete();
}
Subscription : 데이터 개수를 요청하고 구독을 해지package org.reactivestreams;
public interface Subscription {
public void request(long n);
public void cancel();
}
Processor : Publisher와 Subscriber의 기능이 모두 존재하는 인터페이스package org.reactivestreams;
public interface Processor<T, R> extends Subscriber<T>, Publisher<R> { }
Reactive Streams는 위의 인터페이스로 데이터를 통지하는 구조를 제공하는데, 이 구조가 정상적으로 작동하려면 Reactive Streams의 규칙을 준수해야 함
NULL을 통지하지 않음Publisher의 처리는 완료(onComplete) 또는 에러(onError)를 통지해 종료Subscription의 추가 규칙Long.MAX_VALUE를 설정하면 데이터 개수에 의한 통지 제한은 없어짐Subscription의 메서드는 동기화된 상태로 호출되어야 함, 메서드를 동시에 호출해서는 안됨보다 세부적인 규칙이 많지만 위의 규칙에 따라 구현할 경우 자동으로 지켜지며, 자세한 규칙은 아래 링크를 통해 확인이 가능하다.
(참고 : reactive-streams-jvm/README.md)
리액티브 시스템이란 메시지를 보내 데이터를 처리하고 상황에 따라 스케일 아웃과 스케일 인을 자동으로 수행해 장애 내성을 높임으로써 항상 빠르게 응답할 수 있는 시스템을 말한다.