Spring Flux/Mono

Red Culture·2021년 7월 14일

Spring Flux/Mono란

Spring WebFlux의 리액티브 라이브러리 중 하나가 Reactor이다. Reactor는 Flux/Mono api를 제공한다.
Flux/Mono는 Reactive Streams 인터페이스 중에서 데이터(시퀀스)를 제공하는 발행자 역할을 하는 Publisher의 구현체이다.

  • Flux
    -0~N개의 데이터를 전달하기 위한 Reactor 객체이다.
    -하나의 데이터를 전달할 때 마다 onNext 이벤트를 발생시키며, Flux내의 모든 데이터의 전달 처리가 완료되면 onComplete가 발생되며, 데이터 전달 과정에서 오류가 발생되면 onError 이벤트가 발생된다.
  • Mono: 0~1개의 데이터를 전달하기 위한 Reactor 객체이다.

Flux/Mono를 생성하는 방법

1) Flux: Flux 클래스에서 제공하는 팩토리 메서드를 사용한다.

  • just: 시퀀스 생성하고 시퀀스가 있으면 데이터를 발생시킨다. 데이터를 주지 않으면 complete 신호만 발생시킨다.
    -> subscribe가 실행되기 전까지는 어떤 일도 발생되지 않는다. publisher(발행자)는 구독이 되었을 때만 데이터를 subscriber(구독자)에게 전달한다. 구독을 하는 과정은 publisher에게 정의된 subscribe() 메서드를 사용한다. 이때 매개변수로 consumer 함수를 전달할 수 있다. consumer 함수는 데이터를 전달해서 subscriber의 onNext 이벤트가 발생할 때 실행되는 함수이다.
  • range: int 범위를 지정하여 순차적인 데이터를 생성해준다.
  • fromArray / fromIterable / fromStream: Array / Iterable / Stream을 사용해서 Flux를 생성할 수 있다.
  • empty: 아무 값도 전달하지 않는 empty Flux를 만들 수 있다.
  • defer(supplier): 구독되는 순간에 supplier를 실행하여 시퀀스를 생성

2) Mono

  • just
  • empty

*참고 자료
https://dreamchaser3.tistory.com/17
https://brunch.co.kr/@springboot/154
https://javacan.tistory.com/entry/Reactor-Start-1-RS-Flux-Mono-Subscriber

profile
자기 개발, 학습 정리를 위한 블로그

0개의 댓글