[스프링 웹플럭스] 1.1.3. 리액티브 API

https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux-reactive-api

리액티브 스트림은 상호 호환성에 있어서 중요한 역할을 한다. 라이브러리나 기반 컴포넌트로써 중요한 역할을 하지만 애플리케이션 API로써는 유용하지 않다 왜냐면 상당히 로우 레벨이기 때문이다. 애플리케이션이 필요로 하는것은 보다 상위 레벨의 풍부하며 비동기 로직을 조합하는데 사용할 함수 API 같은 것이다. 자바 8의Stream API와 비슷하지만 컬렉션에 국한되진 않은 것이 필요하다. 바로 그러한 역할을 리액티브 라이브러리가 할 것이다.

스프링 웹플럭스에서 선택 리액티브 라이브러리는 리액터다. 리액터는 리액티브엑스의 다양한 오퍼레이터에 해당하는 풍부한 기능 셋을 통해 0..1과 0..N 개의 데이터 시퀀스를 다룰 수 있는 MonoFlux API 타입을 제공한다. 리액터는 리액티브 스트림 라이브러리의 일종이며 따라서 그 모든 오퍼레이터는 논-블럭킹 백 프레셔를 지원한다. 리액터는 서버 사이드 자바에 집중하고 있다. 스프링과 긴밀하게 협업하며 개발되었다.

웹플럭스는 리액터를 핵심 의존성으로 필요로 하지만 다른 리액티브 스트림 라이브러리로 교체할 수 있다. 일반적으로 웹플럭스 API는 평범한  Publisher를 입력값으로 받고 내부적으로 리액터 타입으로 변환하여 사용하고 Flux 나 Mono 를 결과값으로 반환한다. 따라서 여러분은 어떠한 Publisher라도 입력값으로 전달할 수 있으며 결과값에 오퍼레이션을 적용할 수 있다. 하지만 다른 라이브러리를 사용한다면 결과값을 다른 리액티브 라이브러로 변환해야 할 것이다. 가능한한 애노테이션을 사용한 컨테이너처럼, 웹플럭스는 투명하게 RxJava나 다른 리액티브 라이브러리를 사용할 수 있다. 자게한 내용은 리액티브 라이브러리를 참고하라.

Leave a Reply

Your email address will not be published. Required fields are marked *