1. 리액티브 스트림즈란?
데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양
리액티브 스트림즈를 구현한 구현체로 RxJava, Reactor, Akka Streams, Java 9 Flow API 등이 있다.
2. 리액티브 스트림즈 구성요소
리액티브 스트림즈를 통해 구현해야되는 API 컴포넌트는 Publisher, Subscriber, Subscription, Processtor가 있습니다.
Publisher : 데이터를 생성하고 통지(발행, 게시, 방출)하는 역할을 한다.
Subscriber : 구독한 Publisher로부터 통지(발행, 게시, 방출)된 데이터를 전달받아서 처리하는 역할을 한다.
Subscription : Publisher에 요청할 데이터의 개수를 지정하고, 데이터 구독을 취소하는 역할을 한다.
Processor : Publisher와 Subscriber의 기능을 모두 가지고 있다. 즉 Subscriber로서 다른 Publisher를 구독할 수 있고, Publisher로서 다른 Subscriber가 구독할 수 있다.
3. 리액티브 스트림즈 관련 용어 정의
Signal : Publisher와 Subscriber간에 주고받는 상호작용. 예를 들면 onSubscribe, onNext, onComplete, onError, request, cancel 등이 있다.
Demand : 수요 요구 등을 의미함. 리액티브 스트림즈에서 Demand 는 Subscriber가 Publisher에게 요청하는 데이터를 의미합니다. 더 구체적으로 얘기하면 Publisher가 아직 Subscriber에게 전달하지 않은 Subscriber가 요청한 데이터를 말합니다.
Emit : Publisher가 Subscriber 에게 데이터를 통지하는것
Sequence : Publisher 가 emit 하는 데이터의 연속적인 흐름을 정의해 놓은것. 이 Sequence는 Operator 체인 형태로 정의됩니다.
Operator : filter, just, map 같은 메서드들을 연산자라고 함.
Source : Data Source, Source Publisher 등으로 불릴 수 있는데 최초의, 원본의 라는 의미로 사용됨.
'Spring > Webflux' 카테고리의 다른 글
1. 리액티브 시스템과 리액티브 프로그래밍 (1) | 2024.03.06 |
---|---|
Multicasting a Flux to several Subscribers (0) | 2024.03.05 |
Splitting a Flux (0) | 2024.03.05 |
Handling errors (0) | 2024.03.05 |
Peeking into a sequence (0) | 2024.03.04 |