Spring/Webflux

Transforming an existing sequence

blockbuddy93 2024. 3. 4. 18:09

map

Upstream에서 emit된 데이터를 mapper Function을 사용하여 변환한 후, Downstream으로 emit한다.

map Operator 내부에서 에러 발생시, sequence가 종료되지 않고 계속 진행되도록 하는것이 가능하다.

 

 

flatMap

Upstream 에서 emit된 데이터를 inner Publisher를 통해 변환한다.

map이 1대1 매핑인 반면 flatMap은 1대 다 매핑이다.

비동기적으로 동작할 경우, emit되는 순서를 보장하지 않는다.

 

concat

파라미터로 입력되는 Publisher Sequence 들을 연결해서 데이터를 순차적으로 emit한다.

먼저 입력된 Publisher Sequence의 emit이 종료될 때까지 나머지 Publisher Sequenece 들은 대기한다.

 

merge

파라미터로 입력되는 Publisher Sequence 들에게서 emit된 데이터를 인터리빙(interelave) 방식으로 병합한다.

concat operator 처럼 lazily하게 구독하는 것이 아니라 모든 Publisher Sequenece 들을 즉시 구독한다.

 

zip

파라미터로 입력되는 Publisher Sequence 들에게서 emit된 데이터를 결합한다.

각 Publisher 들이 데이터를 하나씩 emit 할떄까지 기다렸다가 결합한다.

 

and

Mono의 Complete Signal과 파라미터로 입력된 Publisher의 Complete Singal을 결합하여 새로운 Mono<Void>로 반환한다.

즉, Mono와 파라미터로 입력된 Publisher의 Sequence가 모두 종료되었음을 알릴 수 있다.

 

when

파라미터로 입력된 Publisher 들의 Complete Signal을 결합하여 새로운 Mono<Void>로 변환한다.

즉, 파라미터로 입력된 Publisher 들의 Seqeuence가 모두 종료되었음을 알릴 수 있다.

 

then

Mono의 Complete Signal과 Error Signal만 새로운 Mono<Void>로 반환한다.

즉, Mono의 Seqeuence가 모두 종료되었음을 알릴 수 있다.

 

collectList

Flux 에서 emit된 데이터를 모아서 List로 모아서 List로 변환한 후, 변환된 List를 emit하는 Mono를 반환한다.

만약 Upstream Seqeunce가 비어있다면 비어있는 List를 Downstream으로 반환한다.

 

collectMap

Flux에서 emit 된 데이터를 기반으로 key와 value를 생성하여 Map의 Emplement로 추가한 후, 최종적으로 Map을 emit하는 Mono를 반환한다.

만약 Upstream Sequence가 비어있다면 비어있는 Map을 Downstream으로 emit한다.