Spring/Webflux

Splitting a Flux

blockbuddy93 2024. 3. 5. 16:48

window

Upstream에서 emit되는 첫 번째 데이터부터 maxsize 숫자만큼의 데이터를 포함하는 새로운 Flux로 분할한다.

Upstream 에 요청하는 데이터 개수 = Downstream에서 요청한 개수 x maxSize

 

buffer

Upstream 에서 emit 되는 데이터가 maxSize 숫자만큼 버퍼에 채워지면 버퍼를 비운다.

버퍼에 비워진 데이터는 List 형태로 한번에 Downstream으로 emit된다.

 

bufferTimeout

Upstream에서 emit된 데이터가 버퍼에 채워질 때, maxTime에 도달하면 버퍼를 비운다.

maxTime에 도달하기 전에 maxSizxe 만큼의 데이터가 버퍼에 채워지면 maxTime까지 기다리지 않고, 버퍼를 비운다.

 

groupBy

groupBy(keyMapper)는 emit되는 데이터를 keyMapper로 생성한 key를 기준으로 그룹화 한 GroupedFlux를 리턴한다.

groupBy(keyMapper, valueMapper)는 emit되는 데이터를 keyMapper로 생성한 key를 기준으로 그룹화 한 후에 valueMapper를 통해 그룹화 된 데이터를 다른 형태로 가공처리 한 후, Downstream으로 내보낸다.