Java

[Project Reactor] 3. Three Sorts of Batching

noahkim_ 2026. 8. 20. 00:18
 
  • 많은 데이터를 묶음 단위로 나누는 방식을 제공함

 

1. Grouping with Flux<GroupedFlux<T>>

  • 같은 Key를 가진 데이터끼리 묶는 방식
  • 하나의 값은 하나의 그룹에만 속함
  • ✅ 각 그룹은 GroupedFlux<K, T>
  • ⚠️ 생성된 GroupedFlux를 실제로 소비해야 데이터를 가져올 수 있음

API 설명 핵심
groupBy(Function) 같은 Key를 가진 데이터를 각각의 GroupedFlux로 분리 Flux<T> → Flux<GroupedFlux<K,T>>
concatMap() 생성된 Group을 하나씩 순차적으로 소비 A 그룹 완료 → B 그룹 → C 그룹, 그룹 간 순서 보장

예제) groupBy()

더보기
Flux.just(1, 3, 5, 2, 4, 6)
    .groupBy(i -> i % 2 == 0 ? "even" : "odd");

 

예제) concatMap()

더보기
Flux.just(
        Flux.just(1, 2, 3),
        Flux.just(4, 5, 6),
        Flux.just(7, 8, 9)
    )
    .concatMap(group -> group)
    .subscribe(System.out::println);
  • 전체 순서 유지를 보장함
  • 1, 2, 3, 4, 5, 6, 7, 8, 9 순으로 출력됨

2. Windowing with Flux<Flux<T>>

3. Buffering with Flux<List<T>>

 

출처