Spring
[Reactor] zipWith(webflux reactor) 함수
JuBin
2021. 10. 5. 19:20
반응형
zipWith은 Reactor의 Mono에서 사용 가능한 함수 입니다.
zipWith에 대해 아주 간단히 설명하고자 합니다.
위 사진은 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할 수 있습니다.
반응형