본문 바로가기
BackEnd

[Spring] Flux 와 Mono의 차이를 찾던중..

by 리다이렉트전문가 2023. 8. 15.
  • Flux : 0 ~ N 개의 데이터 전달
  • Mono : 0 ~ 1 개의 데이터 전달

즉 Flux는 큰 데이터를 여러개로 나눠서 보낼때, Mono는 데이터가 크던지 작던지 한번에 보낼때 사용됩니다.

아래 실제 소스코드를 확인해보면  Mono 는 단 건만 Flux는 단건 다건 둘다 가능합니다.

public static <T> Mono<T> just(T data) {
   return onAssembly(new MonoJust<>(data));
}
public static <T> Flux<T> just(T... data) {
    return fromArray(data);
}

public static <T> Flux<T> just(T data) {
    return onAssembly(new FluxJust<>(data));
}

 

스택오버플로우를 참조 해보면 Fulx는 ContentType 이 application/stream+json 스트리밍 형식을 사용 할때 영향을 줄 수 있다고 되어있네요.

https://stackoverflow.com/questions/52927137/monolistt-difference-with-fluxt-in-spring-webflux

 

Mono<List<T>> difference with Flux<T> in Spring webflux

My understand is Mono<List<T>> is a synchronized Flux<T> and Flux could not be a rest api response. Am I right? If not, what's the different between Mono<List<T>> ...

stackoverflow.com

application/stream+json MIME 타입은 주로 대용량 데이터를 전송하는 목적으로 사용 되는데,현재는 application/x-ndjson이 공식 타입이 되었다고 합니다. 

 

application/x-ndjson은 스프링 데이터 엘라스틱 서치에서 벌크 연산시에 사용 되고 있습니다.

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html