Введение
Иногда клиент должен повторно повторно, когда сервер конфигурации не отвечает, чтобы предоставить сервер конфигурации время для восстановления. Используя компонент повторной попытки, предоставленный Spring, мы можем легко настроить механизм повторной попытки, в том числе интервал повторной попытки, количество времени повторной попытки и т. Д. Я не скажу многое ниже, давайте посмотрим на подробное введение вместе.
Исходный код проекта
Нажмите, чтобы скачать
Добавить зависимости для веб -проектов
Чтобы включить функцию повторного использования клиента, две новые зависимости, пружина и пружина-буте-звездочка, добавьте следующий код в файл 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>
Затем добавьте следующую конфигурацию в файл bootstrap.yml:
Весна: Приложение: Имя: Облако веб-клиента: конфигурация: URI: http: // localhost: 8888 Fail-Fast: True Retry: Начальный интервал: 1000 Max-Attempts: 6 Max-Interval: 2000 Множественный: 1.1
Во-первых, пусть spring.cloud.config.fail-fast будет правдой, то есть, если удаленная конфигурация не может быть получена, она сразу не удастся, но попробуйте еще раз со следующей конфигурацией.
spring.cloud.config.retry Все дети - значения по умолчанию:
тест
Если мы используем проект в этом уроке, нам нужно сначала запустить проект ConfigServer, а затем запустить проект реестра и запустить Eureka, потому что веб -клиент использует сервис Eureka, затем закройте конфигурацию, а затем запустите веб -проект. Мы увидим следующее журнал:
2018-05-15 16: 04: 58.421 Информация 2663 --- [main] cccconfigservicepropertysourcelocator: извлечение конфигурации с сервера по адресу: http: // localhost: 8888
После 6 отказов повторения клиент не может запустить. Если ConfigServer включен на полпути, веб -клиент начинается успешно.
Мелкозернистый контроль
Мы можем реализовать более детальный механизм повторения управления в коде, создать новый класс Java cn.zxuqian.configurations.retryconfiguration в веб -проекте и добавить следующий код:
пакет cn.zxuqian.configurations; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.boot.autoconfigure.condition.conditionalonmissingbean; импорт org.spramework.nannotation.bean; org.springframework.retry.interceptor.retryinterceptorbuilder; import org.springframework.retry.interceptor.retryoperationsInterceptor; открытый класс retryConfiguration {private Static Logger = loggerFactory.getLogger (retryConfiguration.Class); @Bean @conditionalonmissingbean (name = "configserverretryinterceptor") public retryoperationsInterceptor configserverRetryInterceptor () {log.info (String.format ("configserverretryinterceptor: изменение Backoffoptions" + "На начало: %s, Multiper: %s, maxinterval: %s", 1000); return retryinterceptorbuilder .stateless () .backoffoptions (1000, 1,2, 5000) .maxattempts (10) .build (); }} Здесь мы определяем метод configserverretryinterceptor для пружинной повторения, используя наш пользовательский перехватчик повторной попытки. Методы используют RetryinterceptorBuilder для создания безрассудного повторного оператора по мере необходимости, и установите начальный интервал повторного повторения на 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, а затем вы увидите, что проект начинается сбой после десяти повторений.
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.