Publisher, Subscriber, Subscription

greenTea·2023년 11월 22일
0

📘 Publisher, Subscriber, Subscription

리액티브 프로그래밍에서 Publisher, Subscriber, Subscription은 데이터 스트림의 핵심 구성 요소로, 각각 데이터의 생산자, 소비자, 그리고 두 요소 간의 관계를 관리하는 역할을 합니다.

📣 Publisher

Publisher는 데이터 항목들을 생성하고 발행하는 역할을 담당합니다. Publisher는 하나 이상의 Subscriber에게 데이터 스트림을 제공합니다.

public interface Publisher<T> {
    void subscribe(Subscriber<? super T> subscriber);
}
  • 작동 방식: Publishersubscribe 메서드를 통해 Subscriber를 받아들입니다. SubscriberPublisher에 구독할 때 이 메서드가 호출됩니다.

📩 Subscriber

SubscriberPublisher로부터 데이터를 수신하며, 리액티브 스트림의 데이터 처리를 담당합니다. 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

SubscriptionPublisherSubscriber 간의 계약을 나타내며, 데이터의 흐름을 제어합니다.

public interface Subscription {
    void request(long n);
    void cancel();
}
  • 기능:
    • request: Subscriber가 처리할 수 있는 데이터의 양을 Publisher에 요청합니다.
    • cancel: Subscriber가 더 이상 데이터를 받고 싶지 않을 때 구독을 취소합니다.

🌟 결론

위 객체들을 리액티브 프로그래밍에서 데이터의 흐름과 처리를 효과적으로 관리하는 객체로 Publisher를 통해 데이터를 발행하며 Subscriber는 이 데이터를 받아 처리하고, Subscription은 이 두 요소 간의 상호작용을 조절합니다.

profile
greenTea입니다.

0개의 댓글