Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
패스트캠퍼스 환급챌린지 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
- 고정된값을넘기기위해,함수를실행하면 문제가발생할 수 있다
- 에러가발생하지않더라도무조건함수를실 행한후값을사용
![](https://blog.kakaocdn.net/dn/bkfmvj/btsFfwTD3x5/ZId0TUTDmE4GskF5nJ2uVK/img.png)
onErrorResume
- onError이벤트를처리하기위해publisher 를반환하는추상함수를실행
- 해당 publisher의 onNext, onError, onComplete 이벤트를 아래로 전달
- error이벤트가발생한상황에서만apply를실 행
- Mono.just혹은Flux.just와함께사용한다면?
![](https://blog.kakaocdn.net/dn/6Bv4U/btsFfWxRiq4/ajq20TnrZm3n5wauMOYesK/img.png)
onErrorResume
- error이벤트가발생한상황에만apply를실행 하기 때문에 불필요하게 shouldDoOnError를 호출하지 않는다
- publisher를받기때문에Flux뿐만아니라 Mono도 가능
![](https://blog.kakaocdn.net/dn/efNwKz/btsFjVxnHLI/xdCXwGaJUbDjtHAIEpTgAk/img.png)
onErrorComplete
- onError이벤트를처리하기위해 onComplete 이벤트로 변경
- error이벤트가complete이벤트로변경되었 기 때문에 errorConsumer가 동작하지 않는다
onErrorResume - Flux.error
- onErrorResume과 Flux.error (혹은 Mono.error)를 사용하면 에러를 다른 에러로 변환하여 전달 가능
- 더쉬운방법은..?
※ 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. https://bit.ly/48sS29N