개발자는 기록이 답이다

패스트캠퍼스 환급챌린지 21일차 미션 (2월 21일) :  Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기 본문

패스트캠퍼스

패스트캠퍼스 환급챌린지 21일차 미션 (2월 21일) :  Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기

slow-walker 2024. 2. 21. 21:33

에러의 전파

  • Reactive streams에서 onError 이벤트가 발생하면 더 이상 onNext, onComplete 이벤트를 생산하지 않고 종료
  • Reactor에서onError이벤트가발생하면onError이벤트를아로전파
  •  onError이벤트를처리하기위해
    • 고정된값을반환하거나
    • publisher를반환하거나
    • onComplete이벤트로변경하거나
    • 다른에러로변환하거나

에러 핸들링이 없는 경우

  • source나연산자에서에러가발생했지만따로 처리하지 않은 경우 기본적으로 onErrorDropped가 호출
  • onErrorDropped의기본구현은에러를출
public static void onErrorDropped(Throwable e, Context context) { Consumer<? super Throwable> hook =
context.getOrDefault(Hooks.KEY_ON_ERROR_DROPPED,null); if (hook !== null) {
hook = Hooks.onErrorDroppedHook; }
if (hook !== null) {
log.error("Operator called default onErrorDropped", e);
return; }
hook.accept(e); }

errorConsumer

  • subscribe의두번째인자인errorConsumer 를 통해서 error을 얻고 action을 수행 가능

onErrorReturn

  • onError이벤트를처리하기위해고정된값을 반환

onErrorReturn

  • 고정된값을넘기기위해,함수를실행하면 문제가발생할 수 있다
  • 에러가발생하지않더라도무함수를실 행한후값을사용

onErrorResume

  •  onError이벤트를처리하기위해publisher 를반환하는추상함수를실행
  • 해당 publisheronNext, onError, onComplete 이벤트를 아로 전달
  • error이벤트가발생한상에서만apply를실 행
  • Mono.just혹은Flux.just와함사용한다면?

 

onErrorResume

  • error이벤트가발생한상에만apply를실행 하기 때문에 불필요하게 shouldDoOnError를 호출하지 않는다
  • publisher기때문에Flux뿐만아니라 Mono가능

onErrorComplete

  •  onError이벤트를처리하기위해 onComplete 이벤트로 변경
  •  error이벤트가complete이벤트로변경되었 기 때문에 errorConsumer가 동작하지 않는다

onErrorResume - Flux.error

  • onErrorResume과 Flux.error (혹은 Mono.error)를 사용하면 에러를 다른 에러로 변환하여 전달 가능
  • 더쉬운방법은..?


 

※ 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. https://bit.ly/48sS29N