Spring Cloud OpenFeign 설정 기본값

sojw·2025년 5월 9일

1. 로그 레벨 (Logger.Level)

  • 기본값: NONE
  • 설명: 별도 로그 설정이 없으면 요청/응답에 대한 로깅은 수행되지 않습니다.

2. 재시도 정책 (Retryer)

  • 기본값: Retryer.Default
  • 설정: 초기 지연 시간 100ms, 최대 지연 시간 1초, 최대 5회 시도
  • 설명: 네트워크 이슈 등으로 실패한 요청에 대해 정해진 간격과 횟수 내에서 재시도를 수행합니다.

3. 오류 디코더 (ErrorDecoder)

  • 기본값: ErrorDecoder.Default
  • 설명: HTTP 응답 코드가 2xx가 아닐 경우 기본적으로 FeignException을 발생시킵니다.

4. 컨트랙트 (Contract)

  • 기본값: Spring Cloud 환경에서는 SpringMvcContract
  • 설명: Feign 인터페이스에 선언된 Spring MVC 어노테이션(@RequestMapping 등)을 해석하여, 메서드를 REST API 호출로 변환합니다.

5. 인코더/디코더 (Encoder / Decoder)

  • 기본값: 별도의 설정 없으면 Jackson 기반의 구현체(예: SpringEncoder, SpringDecoder)가 사용됩니다.
  • 설명: 요청 객체를 JSON 등으로 직렬화(인코더)하고, 응답 데이터를 역직렬화(디코더)하여 객체로 변환합니다.

6. 요청 옵션 (Request.Options)

  • 기본값:
    • 연결 타임아웃: 약 10초
    • 읽기 타임아웃: 약 60초
      (단, 사용되는 HTTP 클라이언트(JDK HttpURLConnection, Apache HttpClient, OkHttp 등)에 따라 기본값이 달라질 수 있습니다.)
  • 설명: 연결 시도 및 응답 대기 시간에 대한 타임아웃을 설정하여, 응답 지연 시 적절히 대처할 수 있도록 합니다.

7. 클라이언트 구현체 (Client Implementation)

  • 기본값: 별도 설정 시 기본적으로 JDK의 HttpURLConnection을 사용하는 클라이언트가 사용됩니다.
  • 설명: 다른 HTTP 클라이언트를 사용하고자 할 경우, 의존성 및 설정을 통해 Apache HttpClient나 OkHttp 등으로 변경할 수 있습니다.

이와 같은 기본값들은 필요에 따라 application.yml 또는 application.properties 파일을 통해 쉽게 오버라이드(재설정)할 수 있습니다. 예를 들어, 타임아웃이나 재시도 정책을 변경하고자 할 때 다음과 같이 설정할 수 있습니다:

feign:
  client:
    config:
      default:
        connectTimeout: 5000      # 5초
        readTimeout: 10000        # 10초
        loggerLevel: full         # 로깅 레벨 변경
        retryer:
          period: 200             # 재시도 초기 지연 시간 변경
          maxPeriod: 2000         # 최대 지연 시간 변경
          maxAttempts: 3          # 최대 재시도 횟수 변경

Spring Cloud OpenFeign은 기본 Feign 클라이언트의 기본값을 그대로 사용하는 것이 아니라, Spring Cloud에서 제공하는 자동 구성에 의해 일부 기본값이 재정의

connectTimeout: 5000ms
readTimeout: 5000ms
loggerLevel: NONE
retryer: period=100ms, maxPeriod=1000ms, maxAttempts=5
errorDecoder: feign.codec.ErrorDecoder.Default
contract: Spring 환경에 맞게 SpringMvcContract

0개의 댓글