java flux / spring flux / reactor
Reactor 에서 onErrorReturn, onErrorResume, onErrorContinue 의 차이
onErrorReturn
error 가 발생할 때 static 한 기본 값을 return 하려고 할때 쓰면된다.
// kotlin code
fun test(): Mono<String> {
return Mono.just("test")
.map{
"return-test"
}
.doOnError{
log.error('it.message')
}
.onErrorReturn("error-return")
}
onErrorResume
error 가 났을때 어떤 동작을 할지 함수를 할당할 수 있다. onError Resume 에서 return 하는 것으로 Flux 가 대체된다.(replace)
fun test(): Mono<String> {
return Mono.just("test")
.map{
"return-test"
}
.doOnError{
log.error('it.message')
}
.onErrorResume {
Mono.just("error-return")
}
}
onErrorContinue
Flux.range(1,5)
라는 stream 이 있다고 하고, 3번째에서 error 가 났다고 가정해보자. 그러면, onErrorContinue
는 3번째에서 error 관련 처리를 하고, 이어서 4번째 5번째 처리를 한다.
onErrorResume
인 경우3번째에서 끝난다. 그래서 이때 return 으로 다른 stream(Flux) 를 줘야 한다.
onErrorResume 과 doOnError 의 차이점
위 글에서 수도관을 예로 들어 잘 설명해준다.
요약하면, doOnError 는 log 등 pipeline 에 영향을 주지 않는 작업을 할 때 쓰이고, onErrorResume
은 pipeline 의 stream 에 대한 변형등을 할 때 쓰인다.
댓글 없음:
댓글 쓰기