JuBin's personal study blog

[Reactor] zipWith(webflux reactor) 함수 본문

Spring

[Reactor] zipWith(webflux reactor) 함수

JuBin 2021. 10. 5. 19:20
반응형

zipWith은 Reactor의 Mono에서 사용 가능한 함수 입니다.

zipWith에 대해 아주 간단히 설명하고자 합니다.

 

zipWith function

 

 

위 사진은 zipWith 함수의 flow를 보여줍니다.

사진 설명을 하자면 초록색원 A, 노란색사각형 1은 각각 Mono에서 발생되는 return값 입니다. 각 도형 오른쪽 검은 실선은 해당 Mono가 return되는 시점입니다. zipwith(A,1)로 인해 결과물 A1이 return 됩니다.

 

반응형 프로그래밍에서 코드를 짜는 경우 서로 다른 두 Mono가 작업이 완료되는 시점에 특정 동작을 함수가 필요한 경우가 있습니다. 이러한 상황에 zipWith을 사용하면 유용합니다.

 

return Mono.just(req).flatMap {
            this.bookingConfigService.getBookingPolicy(soId).zipWith(
                this.bookingFindService.getBooking(req.pathVariable("bookingId"), "SOID")
            )
        }.flatMap {
       		var a = it.t1
            var b = it.t2
        }

 

코드를 예시로 설명하자면 먼저 정책 서비스에 정책정보를 요청하고 또다른 외부 예약 서비스에서는 예약정보를 요청 한 뒤 이를 조합하여 return할 수 있습니다.

 

zipWith을 이용하면 서로 다른 두 Mono가 작업이 완료되는 시점에 두 내용을 가공하여 하나의 Mono로 return할 수 있습니다.

 

반응형