스프링 인 액션 : 스프링 5.2.x : 스프링 5의 강력한 기능과 생산성을 활용한 웹 애플리케이션 개발
4개의 인터페이스
Publisher(발행자)
@FunctionalInterface
public static interface Publisher<T> {
/*
* Subscriber(구독자)가 Publisher(발행자)를 구독 신청할 수 있는 메서드.
*/
public void subscribe(Subscriber<? super T> subscriber);
}
Subscriber(구독자)
public static interface Subscriber<T> {
/*
* Subscriber가 수신하는 첫번째 이벤트.
* Publisher가 onSubscribe()를 호출할 때 이 메서드의 인자로 Subscription전달
* Subscriber는 Subscription 객체를 통해서 구독을 관리한다.
* Subscription.request(Long)로 데이터 요청.
*/
public void onSubscribe(Subscription subscription);
public void onNext(T item);
public void onError(Throwable throwable);
public void onComplete();
}
Subscription(구독정보)
public static interface Subscription {
/*
* 데이터를 요청
* @param n 받고자 하는 데이터의 항목 수(백 프레셔)
*/
public void request(long n);
/* 구독 취소 */
public void cancel();
}
Processor(프로세서)
public static interface Processor<T,R> extends Subscriber<T>, Publisher<R> {
}