[Web on Reactive Stack] 6. Reactive Libraries

한글로 번역한 Web on Reactive Stack, 6. Reactive Libraries

#spring #reactive


6. Reactive Libraries

spring-webfluxreactor-core에 의존하여 내부적으로 이를 사용하여 비동기 로직을 구성하고 리액티브 스트림 지원을 제공한다. 일반적으로 웹플럭스 API는 Flux 또는 Mono를 반환한다.(내부적으로 사용되므로) 그리고 어떤 리액티브 스트림 Publisher 구현체든 입력으로 받을 수 있다. FluxMono의 사용은 중요하다. 카디널리티 표현에 도움되기 때문이다. - 예를 들어, 비동기 값이 단일 또는 다중값인지 여부, 그리고 이는 어떤(예를 들면, HTTP 메시지를 인코딩 또는 디코딩할 때 등) 결정을 할 때 필수적일 수 있다.

어노테이션 컨트롤러의 경우 웹플럭스는 애플리케이션에서 선택한 리액티브 라이브러리에 잘 맞춰진다. 이는 리액티브 라이브러리나 기타 비동기 타입을 플러그인처럼 해주는 ReactiveAdapterRegistry의 도움으로 수행된다. 레지스트리는 RxJava와 CompletableFuture를 기본적으로 내장 지원하지만 다른 라이브러리도 등록 가능하다.

함수형 API(예를 들어, 함수형 엔드포인트, 웹크랄이언트 등)의 경우 웹플럭스 API에 대한 일반 규칙을 적용한다. FluxMono는 반환값으로, 입력으로는 리액티브 스트림 Publisher는 입력으로 받는다. 커스텀 구현체나 다른 리액티브 라이브러리의 Publisher는 의미를 알 수 없는 스트림(0..N)으로만 처리할 수 밖에 없다. 그러나 시맨틱스를 알고 있다면, raw한 Publisher를 전달하는 대신에 Flux 또는 Mono.from(Publisher)로 래핑할 수 있다.

예를 들어, Mono가 아닌 Publisher인 경우, Jackson JSON 메시지 작성자는 여러 개의 값을 예상한다. 만약 미디어 타입이 무한 스트림을 나타낸다면(예를 들어, application/json+stream), 개별적으로 작성(write)하고 플러시(flush) 한다. 그렇지 않으면 값이 목록으로 버퍼링되어 JSON 배열로 렌더링된다.


목차 가이드





댓글을 남기시려면 Github 로그인을 해주세요 :D