package com.github.yingzhuo.spring.auto.retry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.retry.annotation.EnableRetry; import org.springframework.retry.backoff.FixedBackOffPolicy; import org.springframework.retry.policy.SimpleRetryPolicy; import org.springframework.retry.support.RetryTemplate; @EnableRetry @Configuration @ConditionalOnClass(RetryTemplate.class) @ConditionalOnProperty(name = "spring.auto.retry.enabled", havingValue = "true", matchIfMissing = false) public class RetryConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(RetryConfiguration.class); public RetryConfiguration() { LOGGER.debug("spring-auto: '{}' enabled.", RetryConfiguration.class.getSimpleName()); } @Bean public RetryTemplate retryTemplate() { RetryTemplate retryTemplate = new RetryTemplate(); FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy(); fixedBackOffPolicy.setBackOffPeriod(2000l); retryTemplate.setBackOffPolicy(fixedBackOffPolicy); SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy(); retryPolicy.setMaxAttempts(3); retryTemplate.setRetryPolicy(retryPolicy); return retryTemplate; } }