Reactor

알파로그·2023년 11월 10일
0

Spring WebFlux

목록 보기
5/13
  • Reactive Programming 을 위한 Reactive 라이브러리를 의미한다.
  • Reactive Streams 스펙을 구현한 구현체 중 하나이다.
  • Spring 에코 시스템에서 Reactive Stack 의 기반이 되며 Spring WebFlux 프레임워크에 포함이 되어 있다.

✏️ 용어 정리

  • Publisher - 발행자, 게시자, 생산자, 방출자
  • Subscriber - 구독자, 소비자
  • Emit
    • Publisher 가 데이터를 내보내는 것
    • 방출, 내보냄, 통지
  • Sequence
    • Publisher 가 Emit 한 데이터의 연속적인 흐름을 정의해 놓은 것
    • Operator 체인 형태로 정의 됨
  • Subscribe
    • Subscriber 가 Sequence 를 구독하는 것
  • Dispose
    • Subscriber 가 Sequence 구독을 해지 하는 것
  • Operater
    • Reactive 에서 사용되는 연산자

✏️ 예제

  • Reactor 의 흐름은 크게 3가지 흐름이 있다.
    1. 데이터를 생산하는 생산 과정
    2. 데이터를 연산하는 operater 과정
    3. 데이터를 구독자에게 전달하는 과정
  • Reactor 의 Publisher 는 대표적으로 MonoFlux 가 있다.
    • 데이터를 생성하기 때문에 생산자 라고도 부른다.
    • just() 는 Emit 을 수행하는 메서드로 인자를 data 라고 한다.
  • Flux 가 생산한 데이터를 justmap 을 사용해 체이닝 방식으로 연산하고있다.
    • 이 과정이 Operater 과정이다.
  • 마지막으로 operater 된 데이터를 구독자에게 전달하고 있다.
    • 생산자로 부터 subscirbe() 가 호출되었기 때문에 생산자가 구독을 한 형태로 볼 수 있지만 그렇지 않다.
    • subscribe() 는 구독자를 호출하는 메서드로 실제 구독자는 메서드의 인자라고 할 수 있다.
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Flux;

@Slf4j
public class HelloReactor {
    public static void main(String[] args) {
        Flux<String> sequence = Flux.just("Hello", "Reactor");

        sequence
                .map(data -> data.toLowerCase())
                .subscribe(data -> log.info(data));
    }
}
profile
잘못된 내용 PR 환영

0개의 댓글