인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Sehyeong An님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

CircuitBreaker와 Resilience4J의 사용

feign + resilience4j 적용 시, fallback exception 처리 질문

작성

·

53

0

Resilience4j - circuitbreaker를 보며 공부 중에 feign 에 Resilience4j의 cb나 bulkhead를 적용하게 되면 feignfallbackfactory 동작 시, throwable이 wrapping 되는 현상이 나타납니다.

(ex. ExecutionException) 예를 들어, 4xx대의 에러, 즉 FeignException.BadRequest에 대한 분기 처리를 하려면 fallbackfactory 에서 throwable에 대한 원본 cause 를 추출하는 방법 밖에는 없을까요? (ex, throwable.getcause().getcause())

답변 2

0

Sehyeong An님의 프로필 이미지
Sehyeong An
질문자

강사님 답변 기다리고 있습니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. Sehyeong An님.

Feign과 Resilience4j를 함께 사용했을 때 발생할 수 있는 문제, 즉 Throwable 객체가 여러번 wrapping 되는 현상에 대해 질문 주셨군요. 이 경우, fallbackFactory 내에서 Throwable의 원본 cause를 찾는 방법 외에 다른 대안이 있는지 궁금해 하셨습니다.

관련하여 유사한 사례와 해결 방법이 여러 강의 질문 게시판에 나와 있습니다. 이번 질문에서 언급하신 부분과 관련된 참고 자료를 아래와 같이 제공해 드립니다:

  1. Resilience4J CircuitBreaker 관련 질문 - Resilience4j의 기본 세팅과 적용 방법에 대해 설명한 게시물입니다.

  2. 설정 정보가 다른 CircuitBreaker 사용하는 방법 - 다양한 CircuitBreaker 설정을 적용하고 관리하는 방법에 대한 답변을 확인할 수 있습니다.

  3. resilience4j 라이브러리 오류문제 - Resilience4j 라이브러리와 관련된 가장 흔한 문제들에 대한 정보를 제공합니다.

Feign과 Resilience4j를 함께 사용할 때 Throwable이 여러 번 래핑되는 상황이 종종 발생합니다. 이는 Resilience4j의 내부 구현 메커니즘 때문이며, 현재로서는 Throwable#getCause()를 사용하여 원본 예외를 추출하는 방법이 가장 일반적입니다. 하지만 이러한 방식을 사용하면서도 코드의 가독성을 유지하기 위해 별도의 유틸리티 메서드를 작성하여 사용하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.