소개
구성 서버가 응답하지 않으면 구성 서버가 복구 할 시간을 제공 할 때 클라이언트가 다시 시도해야합니다. Spring에서 제공하는 재 시도 구성 요소를 사용하여 재 시도 간격, 재 시도 시간 수 등을 포함한 재 시도 메커니즘을 쉽게 구성 할 수 있습니다.
프로젝트 소스 코드
다운로드하려면 클릭하십시오
웹 프로젝트에 종속성을 추가하십시오
클라이언트 재 시도 기능, 스프링 레트 레이트 및 스프링 보트 스타터 AOP의 두 가지 새로운 종속성을 활성화하려면 웹 프로젝트의 pom.xml 파일에 다음 코드를 추가하십시오.
<pectionency> <groupId> org.springframework.retry </groupid> <artifactid> 스프링-레 트리 </artifactid> <bersion> 1.2.2.2.2.2. release </version> </dependency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-</artifactid>
그런 다음 bootstrap.yml 파일에 다음 구성을 추가하십시오.
스프링 : 응용 프로그램 : 이름 : Web-Client Cloud : Config : uri : http : // localhost : 8888 FAIL-FAST : True Retry : 1000 MAX-ATTEMPTS : 6 MAX-INTERVAL : 2000 배수 : 1.1
먼저, spring.cloud.config.fail-fast를 true, 즉 원격 구성을 얻을 수 없다면 즉시 실패하지만 다음 구성으로 다시 시도하십시오.
Spring.cloud.config.retry 모든 어린이는 기본값입니다.
시험
이 튜토리얼에서 프로젝트를 사용하는 경우 먼저 Configserver 프로젝트를 시작한 다음 Registry 프로젝트를 시작하고 웹 클라이언트가 Eureka 서비스를 사용한 다음 Configserver를 닫은 다음 웹 프로젝트를 시작하기 때문에 Eureka를 시작해야합니다. 다음 로그를 볼 수 있습니다.
2018-05-15 16 : 04 : 58.421 Info 2663 --- [Main] CCCCONFIGSERVICEPROPERTYSORCELOCATOR : 서버에서 구성을 가져 오기 : http : // localhost : 8888
6 번의 재 시도 실패 후 클라이언트가 시작되지 않습니다. Configserver가 활성화되면 중간에 웹 클라이언트가 성공적으로 시작됩니다.
세분화 된 통제 재 시도
코드에서보다 세분화 된 제어 재 시도 메커니즘을 구현하고 웹 프로젝트에서 새로운 Java 클래스 CN.zxuqian.configurations.retryConfiguration을 만들고 다음 코드를 추가 할 수 있습니다.
패키지 cn.zxuqian.configurations; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.sprameframework.autoconfigure.condition.conditionalonmissingbean; import org.springframext.annotation org.springframework.retry.interceptor.retryinterceptorbuilder; import org.springframework.retry.interceptor.retryoperationsinterceptor; public class retryconfiguration {private static logger log = loggeractory.getLogger (retryConfiguration.Class); @Bean @ConditionalOnMissingBean (name = "ConfigserVerretryinterceptor") public Retryoperationsinterceptor ConfigserVerretryinterceptor () {log.info ( "string.format ("configserverReretryinterceptor : backoffotions " +", 이니셜 : %s로 변경, maxinterval : 1. return retryinterceptorBuilder .StateNess () .BackOffOptions (1000, 1.2, 5000) .MaxAttempts (10) .Build (); }} 여기서 우리는 사용자 정의 재 시도 인터셉터를 사용하여 스프링 레트리에 대한 configserverretryinterceptor 메소드를 정의합니다. 메소드는 RetryinterceptorBuilder를 사용하여 필요에 따라 무국적 리트너리오 퍼레이션 interceptor를 생성하고 초기 재시도 간격을 1000 밀리 초로 설정하고, 다중 증가는 1.2 배, 최대 재 시도 간격은 5000 밀리 초이며 최대 재 시도 시간은 10 배입니다. 빌더는 또한 관심있는 독자가 스스로 공부할 수있는 재 시도 메커니즘 구성과 같은 인터페이스를 제공합니다.
@ConditionalOnMissingBean은 BeanFactory에 ConfigserVerretryinterceptor라는 콩이 없을 때이 콩이 일치 함을 나타냅니다.
마지막으로, SRC/Main/Resources/Meta-Inf/(폴더가 생성 될 수 없음)에서 새 Spring.Factories 파일을 작성하여 시작시 구성시 구성으로 클래스를 생성하도록 지정하여 원격 구성을 얻기 전에 적용됩니다.
org.springframework.cloud.bootstrap.bootstrapconfiguration = cn.zxuqian.configurations.retryconfiguration
시험
마지막으로, Configserver를 닫는 조건에서 웹 프로젝트를 시작하면 10 번의 재 시도 후 프로젝트가 시작되는 것을 볼 수 있습니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.