В этой статье представлен метод вершины весны, чтобы поддержать Spring Retry. Это совместно с вами. Детали следующие:
Первый шаг - ввести зависимости Maven
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version></parent><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-rerety-> <DegENDION> <GroupD> org.springframework.retry </GroupId> <StrifactId> Spring-retry </artifactid> <sersive> 1.1.2.release> </revictid> </Artifactid> <sersive> 1.1.2.ReleaseEres <groupId> org.aspectj </GroupId> <artifactId> AspectJweaver </artifactid> <sersive> 1.8.6 </version> </depertive>
Шаг 2: Добавить @retryable и @recover Annotations
Пакет Hello; импорт org.springframework.remoting.remoteaccessexception; импорт org.springframework.retry.annotation.backoff; импорт org.springframework.retry.annotation.recover; импорт org.springframework.retration.Recover; импорт. org.springframework.stereotype.service; @servicepublic class remoteService {@retryable (value = {remoteAccessException.class}, maxattempts = 3, backoff = @backoff (dower = 5000l, multipier = 1)) public void call () toplows toplow {System.out.print.print. Бросьте New RemoteAccessException ("Исключение вызова RPC");}@Recoverpublic void Recover (remoteAccessException e) {System.out.println (e.getMessage ());}} @Retryable annotation <br /> Если аннотированный метод имеет исключение, он будет опробован снова
Значение: укажите, что исключение произошло и попробуйте еще раз
Включите: как значение, по умолчанию пусто. Когда исключение также пусто, все исключения будут опробованы снова
Исключите: укажите, что исключение не повторно, по умолчанию пусто. Когда включение также пусто, все исключения будут повторены.
maxattemps: количество времен повторения, по умолчанию 3
Бэкваном: повторно повторно механизм компенсации, без дефолта
@Backoff Annotation
Задержка: укажите задержку и попробуйте еще раз
Мультипликатор: укажите мультипликаторы задержки, такие как задержка = 5000L, мультипликатор = 2, после того, как первая попытка составляет 5 секунд, второй раз составляет 10 секунд, а третий раз составляет 20 секунд.
@Восстанавливаться
Когда попытка достигает указанного количества раз, аннотированный метод будет вызван обратно, а обработка журнала может быть выполнена в этом методе. Следует отметить, что обратный вызов произойдет только в случае возникновения исключения, а тип параметра одинаково.
Шаг 3: Запустите контейнер и тестируйте в Springboot
Добавить аннотацию @enableretry, чтобы включить функцию повторной попытки
Пакет Hello; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.context.applicationContext; импорт org.springframework.context.annotation.annotationConficapplicationContext; импорт org.springframework.retry.annotation.EnableRetry;@SpringBootApplication@eNableRetryPublic Class Application {public static void main (string [] args) Throws Exception {ApplicationContext AnnotationContext = new AnnotationConfigApplicationContext ("hello"); RemoteService remoteService = annotationContext.getBean ("remoteService", remoteService.class); remoteService.call (); }} Результаты работы:
16: 50: 51.012 [Main] Debug org.springframework.retry.support.retrytemplate - повторение: count = 0
Сделай что -нибудь ...
16: 50: 51.025 [Main] Debug org.springframework.retry.backoff.exponentialbackoffpolicy - Сон для 5000
16: 50: 56.026 [Main] Debug org.springframework.retry.support.retrytemplate - Проверка на ретроу: count = 1
16: 50: 56.026 [main] Debug org.springframework.retry.support.retrytemplate - повторение: count = 1
Сделай что -нибудь ...
16: 50: 56.026 [Main] Debug org.springframework.retry.backoff.exponentialbackoffpolicy - Сон для 5000
16: 51: 01.026 [Main] Debug org.springframework.retry.support.retrytemplate - Проверка на ретроу: count = 2
16: 51: 01.027 [Main] Debug org.springframework.retry.support.retrytemplate - повторение: count = 2
Сделай что -нибудь ...
16: 51: 01.027 [Main] Debug org.springframework.retry.support.retrytemplate - Проверка на ретроу: count = 3
16: 51: 01.027 [main] Debug org.springframework.retry.support.retrytemplate - повторная попытка
RPC Call Exception
Ссылка: https://github.com/spring-projects/spring-retry
Пополнить
Для неампозитивных запросов (таких как новые или обновленные операции) не используйте повторную попытку, поскольку это окажет большое влияние на согласованность данных.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.