매일 매일, 차곡 차곡 쌓기



완벽하지 않은 것을 두려워 말며,
완성도를 높히는데 집중하자.

Spring/Webflux

2. 리액티브 스트림즈

blockbuddy93 2024. 3. 7. 02:32

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