[컴] Reactor 에서 onErrorReturn, onErrorResume, onErrorContinue 의 차이

 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 에 대한 변형등을 할 때 쓰인다.

See Also

  1. 쿠…sal: [컴] reactor의 flatMap vs map

Reference

  1. Flux (reactor-core 3.4.22)
  2. Reactor onErrorContinue VS onErrorResume
  3. Handling Errors in Spring WebFlux | Baeldung

댓글 없음:

댓글 쓰기