Spring 팀의 주도하에 만들어진 리액티브 스트림즈의 구현체이며,
Reactor Core 라이브러리는 Spring WebFlux 프레임워크에 포함되어 있습니다.
Reactor 의 특징은 아래와 같습니다.
Reactor 은 리액티브 스트림즈를 구현한 구현체입니다.
Reactive Streams :
데이터 스트림을 Non-blocking + Async 하게 처리하기 위하여 정의해 놓은 인터페이스
블로킹 방식과 달리, 작업이 완료가 되지 않았어도 프로그램의 제어권을 메인루틴에게 바로 돌려줍니다.
바로 돌려주기 때문에 메인루틴은 서브루틴이 종료되지 않아도 자신이 할 일을 진행할 수 있습니다.
구독자와 발행자 간 상호작용은 Java 의 함수형 프로그래밍 API 를 통하여 이루어 집니다.
Reactor 의 Pulisher 타입은 두가지(Flux, Mono) 중 하나로 무한대의 데이터를 emit 할 수 있는 Publisher 입니다.
Flux 와 마찬가지로 Publisher 의 타입 중 하나로, 괄호 안 숫자처럼 emit 하지 않거나 1개만 emit 하는 Publisher 입니다.
발행자로부터 처리된 데이터를 처리하는데 있어 과부하가 걸리지 않도록 배압(BackPressure) 조절을 지원합니다.
public static void main(String[] args) {
Flux<String> sequence = Flux.just("Hello", "Reactor");
sequence.map(data -> data.toLowerCase())
.subscribe(data -> system.out.println(data));
}
Flux.just("Hello", "Reactor");
) 로부터 데이터를 발행합니다.data -> system.out.println(data)
) 는 퍼블리셔로 부터 발행된 데이터를 처리합니다.