티스토리 뷰
리액티브란 프로그래밍이란?
비동기 데이터 스트림을 사용한 프로그래밍입니다
리액티브 스트림 인터페이스란?
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 흐름입니다
- Subscriber가 Publisher에게 구독을 요청합니다
- Publisher가 Subscriber에게 Subscripion을 전달합니다
- Subscription을 통하여 Subsciber가 Publisher에게 데이터를 요청합니다
4,5. Publisher가 Subscription을 통하여 데이터나 완료/에러 여부를 전달합니다
이미지 출처: 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
링크
TAG
- reactive stream
- Java
- Serialize
- iterable
- Concurrecy
- JMeter
- template method
- gslb
- template
- 디자인패턴
- reactive
- nosql
- concurrency
- 부하테스트
- LAMBDA
- object
- Spring
- 영속성
- Serializable
- strategy
- in-memory
- jdk11
- 메인보드#asrock b650m #조립pc #후기이벤트
- Observer Pattern
- observable
- Redis
- exception
- Design Pattern
- jvm
- Effective JAVA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함