📘 Publisher, Subscriber, Subscription
리액티브 프로그래밍에서 Publisher
, Subscriber
, Subscription
은 데이터 스트림의 핵심 구성 요소로, 각각 데이터의 생산자, 소비자, 그리고 두 요소 간의 관계를 관리하는 역할을 합니다.
Publisher
Publisher
는 데이터 항목들을 생성하고 발행하는 역할을 담당합니다. Publisher
는 하나 이상의 Subscriber
에게 데이터 스트림을 제공합니다.
public interface Publisher<T> {
void subscribe(Subscriber<? super T> subscriber);
}
Publisher
는 subscribe
메서드를 통해 Subscriber
를 받아들입니다. Subscriber
가 Publisher
에 구독할 때 이 메서드가 호출됩니다.Subscriber
Subscriber
는 Publisher
로부터 데이터를 수신하며, 리액티브 스트림의 데이터 처리를 담당합니다. Subscriber
는 다음과 같은 네 가지 메서드를 구현합니다:
public interface Subscriber<T> {
void onSubscribe(Subscription subscription);
void onNext(T item);
void onError(Throwable throwable);
void onComplete();
}
onSubscribe
: Publisher
에 구독할 때 호출되며, Subscription
객체를 통해 데이터 요청 및 구독 취소를 관리합니다.onNext
: Publisher
로부터 새 데이터 항목을 받을 때 호출됩니다.onError
: 데이터 처리 중 발생한 에러를 처리합니다.onComplete
: 데이터 스트림이 완료되었음을 알립니다.Subscription
Subscription
은 Publisher
와 Subscriber
간의 계약을 나타내며, 데이터의 흐름을 제어합니다.
public interface Subscription {
void request(long n);
void cancel();
}
request
: Subscriber
가 처리할 수 있는 데이터의 양을 Publisher
에 요청합니다.cancel
: Subscriber
가 더 이상 데이터를 받고 싶지 않을 때 구독을 취소합니다.위 객체들을 리액티브 프로그래밍에서 데이터의 흐름과 처리를 효과적으로 관리하는 객체로 Publisher
를 통해 데이터를 발행하며 Subscriber
는 이 데이터를 받아 처리하고, Subscription
은 이 두 요소 간의 상호작용을 조절합니다.