FeignClient 기반 시간 초과 처리 방안 호출

FeignClient 호출 시간 초과
문제 의 전제
SpringCloud 간 FeignClient 호출 에 ReadTime Out 이 발생 한 경우
FeignClient 서비스 에서 호출 되 는 기본 시간 초과 시간 은 2 초 입 니 다.
인터넷 검색 솔 루 션
Hystrix 닫 기(유치 한 생각)
시간 초과 연장(Spring 많은 시간 초과 설정 이 많 음)
해결 방안
FeignClient 에 사용자 정의 시간 초과 설정 을 추가 합 니 다.Nacos 와 결합 하여 제어 할 수 있 습 니 다.
말 이 많 지 않 으 면,원본 을 붙인다.

/**
 * FeignClient   
 *
 * @author gralves
 * @date 2020/8/10
 */
@Component
public class FeignClientConfig {
 //     
    @Value("${service.feign.connectTimeout:60000}")
    private int connectTimeout;
    
    //       
    @Value("${service.feign.readTimeOut:60000}")
    private int readTimeout;
 //         
    @Bean
    public Request.Options options() {
        return new Request.Options(connectTimeout, readTimeout);
    }
}
FeignClient 사용자 정의 설정 클래스 사용

// configuration         
@FeignClient(value = "xxx", configuration = FeignClientConfig.class)
public interface XxxFeignClient {...
서비스 A/B 를 시작 하여 서비스 호출 을 진행 합 니 다.정지점 59 초(시간 초과 하지 않 음),정지점 60 초(ReadTime Out).설정 이 유효 합 니 다.
건의 하 다.
서로 다른 서 비 스 는 서로 다른 시간 초과 시간 을 설정 할 수 있다.
FeignClient 는 공공 공구 꾸러미 로 추출 하여 사용 할 수 있 습 니 다.
결점.
너무 귀찮아 서 디 버 깅 설정 이 귀 찮 으 면 사용 할 수 있어 요~
FeignClient 시간 초과 설정
Feign 은 사실 하나의 포장 입 니 다.복잡 한 Http 요 구 를 우리 가 한두 개의 주석 만 쓰 면 해결 할 수 있 는 지경 으로 포장 합 니 다.그 가 밑바닥 에서 사용 하 는 것 은 역시 리본 이다.
Feign 의 호출 은 모두 두 층 으로 나 뉘 는데 그것 이 바로 Ribbon 의 호출 과 Hystrix(퓨즈 처리)의 호출 입 니 다.높 은 버 전의 Hystrix 는 기본적으로 닫 혔 습 니 다.
Ribbon 시간 초과 설정

위의 그림 의 정보 가 나타 나 면 Ribbon 이 시간 을 초 과 했 음 을 설명 합 니 다.설정 파일 에서 제어 처 리 를 해 야 합 니 다.

### Ribbon   
ribbon:
  #     
  ConnectTimeout: 2000
  #     
  ReadTimeout: 5000
Hystrix 시간 초과 설정
Hystrix 열기

### Feign   
feign:
  #      (   )
  hystrix:
    enabled: true
이때 시간 을 초과 하면 오 류 를 보고 합 니 다.

기본 Hystrix 시간 초과 설정:
默认 Hystrix 超时配置
시간 초 과 를 피하 기 위해 서,우 리 는 업무 상황 에 따라 자신의 시간 초 과 를 설정 할 수 있 습 니 다.여기 서 녹 는 시간 은 5000/밀리초 입 니 다.메모:Ribbon 의 시간 초과 시간 이 Hystrix 의 시간 초과 시간 보다 크 지 않도록 권장 합 니 다.

### Hystrix   
hystrix:
  #            Hystrix         hook,   hook    SecurityContext         Hystrix    。
  #    Hystrix         Hystrix   ,       HystrixConcurrencyStrategy
  #     Spring bean      。Spring Cloud    Spring            ,            。
  shareSecurityContext: true
  command:
    default:
      circuitBreaker:
        #                   ,    。  20 
        requestVolumeThreshold: 1
        #         ,     5000 ,     circuit break   5000       request
        #    5000       circuit。  5000
        sleepWindowInMilliseconds: 15000
        #        ,        ,      request,  false
        forceOpen: false
        #                 ,circuit        ,  false
        forceClosed: false
      execution:
        isolation:
          thread:
            #        ,  :1000/  
            timeoutInMilliseconds: 5000
원본 코드:https://github.com/SlowSlicing/demo-spring-cloud-finchley/tree/FeignClientTimeoutConfiguration
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기