Reactive Programming ‐ Reactor Outline - thought-corner/Backend-PlayGround GitHub Wiki

Reactor

  • Reactive Streams : Reactor는 리액티브 스트림즈 사양을 구현한 리액티브 라이브러리이다.
  • Non-Blocking : Reactor는 JVM 위에서 실행되는 Non-Blocking 애플리케이션을 제작하기 위해 필요한 기술이다.
  • Java's Functional API : Reactor에서 Publisher - Subscriber 간의 상호작용은 Java의 함수형 프로그래밍 API를 통해서 이루어진다.
  • Flux(N) : N개의 데이터를 emit한다는 것인데, 다시 말해 Flux는 0 ~ N개 즉, 무한대의 데이터를 emit할 수 있는 Reactor의 Publisher이다.
  • Mono(0|1) : 데이터를 한 건도 emit하지 않거나 단 한 건만 emit하는 단발성 데이터 emit에 특화된 Publisher이다.
  • Well-suited for microservices : Non-Blocking I/O 특징을 가지는 Reactor는 마이크로서비스 기반 시스템에서 수많은 서비스들 간에 지속적으로 발생하는 I/O를 처리하기에 적합한 기술이다.
  • Backpressure-ready network : Reactor는 Publisher로부터 전달받은 데이터를 처리하는 데 있어 과부하가 걸리지 않도록 제어하는 BackPressure를 지원한다.
public class Test {
    public static void main(String[] args) {
        Flux<String> sequence = Flux.just("Hello", "Reactor");
        sequence.map(data -> data.toLowerCase())
                .subscribe(data -> System.out.println(data));
    }
}
⚠️ **GitHub.com Fallback** ⚠️