Mini

[스프링 msa] msa 예외처리 // errorDecoder 이용 본문

Java/Spring-msa

[스프링 msa] msa 예외처리 // errorDecoder 이용

Mini_96 2025. 2. 14. 01:36

* 목적

  • order-service에 문제가 있어도 user-service는 정상작동해야 한다.
  • 일부러 error 만들어보기
@FeignClient(name = "order-service")
public interface OrderServiceClient {
    @GetMapping("{userId}/orders_ng") //api gateway를 거치지 않음
    List<ResponseOrder> getOrders(@PathVariable String userId);
}
  • error msg를 하드코딩 하는 대신 yml 파일 에 값을 넣어두기
    • error msg 수정이 필요할때 1곳만 수정하면 된다!!

@Component
@RequiredArgsConstructor
public class FeignErrorDecoder implements ErrorDecoder {
    private final Environment env;

    @Override
    public Exception decode(String methodKey, Response response) {
        switch (response.status()) {
            case 400:
                break;
            case 404:
                if (methodKey.contains("getOrders")) {
                    return new ResponseStatusException(org.springframework.http.HttpStatus.valueOf(response.status()),
                            env.getProperty("order_service.exception.orders_is_empty"));
                }
                break;
            default:
                return new Exception(response.reason());
        }
        return null;
    }
}
  • 500 에러가 404로 정상적으로 바뀐 모습