Feign, Hystrix 사용 노트

  • @ FeignClient 에 표 시 된 인터페이스 가 다른 인 터 페 이 스 를 확장 하면 fallback 을 설정 하면 Spring 은 확 장 된 인터페이스 에 두 개의 Bean 이 있 음 을 알려 주 고 fallback Factory 를 설정 하면 이 문 제 를 해결 할 수 있 습 니 다.주의해 야 할 것 은 Fallback Factory 의 실현 류 는 Spring 의 구성 요소 여야 한 다 는 것 이다.
  • import java.util.List;
    
    import com.yonyou.ocm.common.rules.RuleDto;
    import feign.hystrix.FallbackFactory;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;
    
    @Slf4j
    @Component
    public class RuleClientFallbackFactory implements FallbackFactory {
      @Override
      public RuleClient create(Throwable throwable) {
          return new RuleClient() {
              @Override
              public List getEnabledCommonRules() {
                  log.info("Fallback for RuleClient.getEnabledCommonRules");
                  return null;
              }
    
              @Override
              public List getEnabledRulesByPackage(String packageName) {
                  log.info("Fallback for RuleClient.getEnabledRulesByPackage");
                  return null;
              }
          };
      }
    }
    
  • 시간 초과 설정: Hystrix 의 시간 초과 시간 은 Ribbon 의 시간 초과 시간 보다 커 야 합 니 다.그렇지 않 으 면 콘 솔 에 경고 메시지 가 나타 날 것 이다.
  • Hystrix
    hystrix:
      command:
        default:
            execution:
                isolation:
                    thread:
                        #     (ribbonReadTimeout + ribbonConnectTimeout) * (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1)
                        timeoutInMilliseconds: 21000
    
  • Ribbon
    ribbon:
      ReadTimeout: 5000
      ConnectTimeout: 5000
    
  • 좋은 웹페이지 즐겨찾기