티스토리 뷰

리액티브란 프로그래밍이란?

비동기 데이터 스트림을 사용한 프로그래밍입니다

 

 

리액티브 스트림 인터페이스란?

asynchronous non-blocking 서비스를 할때 기본이 되는 스펙입니다

java의 RxJava, Spring의 webFlux 등 해당 스펙을 따르고 있습니다

아래와 같이 4개로 구성되어있습니다

  • Processor
  • Publisher
  • Subscriber
  • Subscription

 

public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {}

public interface Publisher<T> {
    //Subscriber의 구독을 받기위한 메소드
   public void subscribe(Subscriber<? super T> s);

}

public interface Subscriber<T> {
    //매개 변수로 Subscription을 받는 메소드
   public void onSubscribe(Subscription s);
    //받은 데이터를 처리하기위한 메소드
   public void onNext(T t);
    //에러를 처리하기위한 메소드
   public void onError(Throwable t);
    //작업 완료시 사용하는 메소드
   public void onComplete();
}

public interface Subscription {
    // n개의 데이터를 요청하기위한 메소드
   public void request(long n);
    //구독을 취소하기 위한 메소드
   public void cancel();
}

 

 

아래는 Reactive Streams API 흐름입니다

  1. Subscriber가 Publisher에게 구독을 요청합니다
  2. Publisher가 Subscriber에게 Subscripion을 전달합니다
  3. Subscription을 통하여 Subsciber가 Publisher에게 데이터를 요청합니다

4,5. Publisher가 Subscription을 통하여 데이터나 완료/에러 여부를 전달합니다

 

reactive1

이미지 출처: https://engineering.linecorp.com/ko/blog/reactive-streams-with-armeria-1/

'Java' 카테고리의 다른 글

[Java] JVM 구조  (0) 2020.11.27
[Java] Object 도서 정리(2)  (0) 2020.11.23
[Java] Object 도서 정리(1)  (0) 2020.11.23
[Java] 제이미터(jmeter)란?  (0) 2020.11.23
[Java] 람다(lambda)함수란?  (0) 2020.11.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함