Skip to Content
Suffering builds character

5.프로젝트 리액터

리액티브 스트림 인터페이스는 말 그대로 비동기 기반의 스트림 데이터 처리를 정의한 인터페이스이기 때문에 실제 구현체가 별도로 필요함

이러한 리액티브 스트림 인터페이스를 구현한 라이브러리(Implementation)들은 다음과 같음

1.Project Reactor 

Reactor is a fourth-generation reactive library, based on the Reactive Streams  specification, for building non-blocking applications on the JVM

Project Reactor는 JVM 위에서 동작하는 논블로킹 애플리케이션을 개발하기 위해Reactive Streams 스펙에 기반하여 구현된 리액티브 구현체(Implementation)이자 라이브러리

Project Reactor는 대부분 Java 언어만으로 작성되어 있으며, Spring 관련 코드는 포함되어 있지 않음

💡
Tip

Project Reactor와 Spring WebFlux와의 차이

Project Reactor는 Spring에서 리액티브 프로그래밍을 추상화한 프로젝트인 Spring Webflux의 내부 모듈로 동작함

2. Project Reactor의 특징

2-1. 논블로킹 기능 제공

Java의 함수형 API 및 CompletableFuture, Stream, Duration 등과 상호작용하여 논블로킹 메커니즘 제공

MSA에 적합하며 HTTP, TCP, UDP를 위한 백 프레셔 기능 제공

2-2. 타입이 지정된 [0|1|N] 시퀀스

비동기 처리를 위해 대표적인 두 가지 타입인 Mono [0|1]와 Flux [N] 타입 제공

Mono는 0 또는 1개의 값을 처리, 표현할 때 활용되는 타입
Flux는 0 ~ N개까지의 값을 처리, 표현할 때 활용되는 타입
→ 이 두 가지 타입을 통해 비동기적으로 데이터를 처리, 다양한 연산을 수행할 수 있음

Last updated on