티스토리 뷰

Spring

[Spring Boot] OpenFeign Fallback

snail voyager 2023. 10. 3. 19:07
728x90
반응형

Fallback

  • Fallback 클래스는 Feign Client의 메서드가 실패했을 때 호출되는 대체 로직을 구현
  • Feign Client 인터페이스에 fallback 속성을 설정하여 Fallback 클래스를 연결
@FeignClient(name = "external-service", fallback = MyFallback.class)
public interface MyFeignClient {

    @GetMapping("/api/resource")
    String getResource();
}

@Component
public class MyFallback implements MyFeignClient {

    @Override
    public String getResource() {
        // 실패 시 대체 로직을 여기에 구현
        return "Fallback Response";
    }
}

FallbackFactory

  • Feign Client의 Fallback을 더욱 다양하게 구성하고 커스터마이징할 수 있게 해주는 팩토리 클래스
  • Feign Client의 Fallback 클래스를 인스턴스화하고 구성하는 방식을 커스터마이징할 수 있음
  • 문제가 발생된 Throwable cause에 접근 가능 (에러 출력)
  • Feign Client 인터페이스에 fallbackFactory 속성을 설정하여 FallbackFactory를 연결
@FeignClient(name = "external-service", fallbackFactory = MyFeignClientFallbackFactory.class)
public interface MyFeignClient {

    @GetMapping("/api/resource")
    String getResource();
}

@Component
@Slf4j
public class MyFeignClientFallbackFactory implements FallbackFactory<MyFeignClient> {

    @Override
    public MyFeignClient create(Throwable cause) {
        return new MyFeignClient(){
        	@Override
            String getResource() {
            	log.error("occurred error.", cause);
                return "Fallback Response";
            }
        };
    }
}

 

 

 

https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#spring-cloud-feign-circuitbreaker-fallback

728x90
반응형

'Spring' 카테고리의 다른 글

[Spring] Swagger CORS 이슈  (0) 2023.11.09
[Spring Boot] CircuitBreaker Resilience4j  (0) 2023.10.07
[Spring Boot] WireMock API 테스트  (0) 2023.10.03
[Spring Boot] OpenFeign 로깅 설정  (0) 2023.10.01
[Spring Boot] OpenFeign  (0) 2023.09.28
반응형
300x250