Spring Cloud Config Client 시간 초과 및 재 시도 예시 상세 설명
4321 단어 configclient시간 을 초과 하 다
때때로 클 라 이언 트 는 config server 가 응답 하지 않 을 때 다시 시도 하여 config server 시간 을 회복 해 야 합 니 다.spring 에서 제공 하 는 재 시도 구성 요 소 를 이용 하여 재 시도 간격,재 시도 횟수 등 을 편리 하 게 설정 할 수 있 습 니 다.다음은 더 이상 할 말 이 없 으 니 상세 한 소 개 를 해 봅 시다.
프로젝트 원본 코드
다운로드 클릭
웹 프로젝트 에 의존 추가
클 라 이언 트 재 시도 기능 을 시작 하려 면 두 개의 새로운 의존 이 필요 합 니 다.spring-retry 와 spring-boot-starter-op 은 다음 코드 를 웹 프로젝트 의 pom.xml 파일 에 추가 합 니 다.
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
그리고 boottstrap.yml 파일 에 다음 설정 을 추가 합 니 다:
spring:
application:
name: web-client
cloud:
config:
uri: http://localhost:8888
fail-fast: true
retry:
initial-interval: 1000
max-attempts: 6
max-interval: 2000
multiplier: 1.1
먼저 spring.cloud.config.fail-fast 를 true 로 합 니 다.원 격 설정 을 가 져 오지 못 했 을 때 즉시 실 패 했 지만 아래 설정 으로 다시 시도 합 니 다.spring.cloud.config.retry 의 모든 하위 항목 은 기본 값 입 니 다:
이 튜 토리 얼 의 항목 을 사용 했다 면 configserver 프로젝트 를 먼저 시작 한 다음 에 registry 프로젝트 를 시작 하여 eureka 를 시작 해 야 합 니 다.웹 클 라 이언 트 가 eureka 서 비 스 를 사용 한 후에 configserver 를 닫 고 웹 프로젝트 를 시작 하면 다음 과 같은 log 를 볼 수 있 습 니 다.
2018-05-15 16:04:58.421 INFO 2663 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://localhost:8888
6 번 다시 시도 하 는 데 실 패 했 습 니 다.클 라 이언 트 시작 에 실 패 했 습 니 다.configserver 를 중간 에 열 면 웹 클 라 이언 트 가 시작 되 었 습 니 다.
입자 도 제어 재 시도
우 리 는 코드 에서 더욱 정교 한 제어 재 시도 체 제 를 실현 할 수 있 습 니 다.웹 프로젝트 에서 새로운 자바 류 cn.zxuqian.configurations.Retry Configuration 을 만 들 고 다음 코드 를 추가 할 수 있 습 니 다.
package cn.zxuqian.configurations;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.retry.interceptor.RetryInterceptorBuilder;
import org.springframework.retry.interceptor.RetryOperationsInterceptor;
public class RetryConfiguration {
private static Logger log = LoggerFactory.getLogger(RetryConfiguration.class);
@Bean
@ConditionalOnMissingBean(name = "configServerRetryInterceptor")
public RetryOperationsInterceptor configServerRetryInterceptor() {
log.info(String.format(
"configServerRetryInterceptor: Changing backOffOptions " +
"to initial: %s, multiplier: %s, maxInterval: %s",
1000, 1.2, 5000));
return RetryInterceptorBuilder
.stateless()
.backOffOptions(1000, 1.2, 5000)
.maxAttempts(10)
.build();
}
}
여기 서 configServerRetry Interceptor 방법 을 정의 합 니 다.Spring Retry 는 사용자 정의 재 시도 차단 기 를 사용 합 니 다.방법 은 Retry InterceptorBuilder 를 사용 하여 요구 에 따라 stateless 의 Retry Operations Interceptor 를 만 들 었 고 초기 재 시도 간격 은 1000 밀리초 이 며 증가 배 수 는 1.2 배 이 며 최대 재 시도 간격 은 5000 밀리초 이 며 최대 재 시도 횟수 는 10 회 이 며 builder 는 재 시도 체 제 를 설정 하 는 등 인 터 페 이 스 를 제공 하여 관심 있 는 독자 들 이 스스로 연구 할 수 있 습 니 다.@conditional OnMissingBean 은 Bean Factory 에 configServerRetry Interceptor 라 는 bean 이 없 을 때 만 이 Bean 과 일치 합 니 다.
마지막 으로 src/main/resources/META-INF/(이 폴 더 를 만 들 수 없 음)에 spring.factories 파일 을 새로 만 듭 니 다.원 격 설정 을 가 져 오기 전에 클래스 를 시작 할 때 설정 을 지정 합 니 다.
org.springframework.cloud.bootstrap.BootstrapConfiguration=cn.zxuqian.configurations.RetryConfiguration
테스트마지막 으로 configserver 를 닫 는 조건 에서 웹 프로젝트 를 시작 하면 다시 10 번 시도 한 후에 프로젝트 시작 이 실 패 했 습 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Windows 10의 Docker: 사용자 지정 구성 파일로 mysql:8.0.30-debian 실행.사용자 지정 구성 파일 E:\mysql-config\mysql-docker.cnf를 사용하여 Windows 10에서 공식 mysql:8.0.30-debian 이미지를 실행하는 데 필요한 단계입니다. 내 Windows...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.