티스토리 뷰

5.1 Reactor란?

  • Spring Framework 팀의 주도하에 개발된 리액티브 스트림즈 구현체
  • Spring Framework 5 버전부터 리액티브 스택에 포함
  • Spring WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할
    • 리액티브 프로그래밍을 위한 라이브러리로 Spring WebFlux 프레임워크에 포함된다고 보면 됨
  • Reactor 공식 사이트 : https://projectreactor.io
    1. Reactive Streams
    2. Non-Blocking
    3. Java's functional API
    4. Flux[N] : Refactor의 Publisher 타입
      • 0개부터 N개, 즉 무한대의 데이터를 emit할 수 있음
    5. Mono[0|1] : Refactor의 Publisher 타입
      • 0개 또는 1개의 데이터를 emit할 수 있음 (단발성 데이터에 특화)
    6. Well-suited for microservices
    7. Backpressure-ready network
      • 배압 : 배관으로 유입되는 가스나 액체 등의 흐름을 제어하기 위해 역으로 가해지는 압력
      • 데이터 처리 시 과부하가 걸리지 않도록 제어

5.2 Hello Reactor 코드로 보는 Reactor의 구성요소

    public static void main(String[] args) {
        Flux<String> sequence = Flux.just("Hello", "Reactor");
        sequence.map(data -> data.toLowerCase())
                .subscribe(data -> System.out.println(data));
    }
  • Publisher : sequence
  • 데이터 소스 : "Hello", "Reactor"
  • Subscriber : System.out.println(data)
  • Operator
    • 데이터 생성 : just()
    • 데이터 가공 : map()
> hello
> reactor
  1. 데이터 생성 및 제공
  2. 데이터 가공
  3. 전달받은 데이터 처리
댓글