个人技术分享

一、添加Spring Retry依赖

如果你使用Maven,可以在pom.xml中添加以下依赖:

<dependency>
    <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
    <version>2.0.2</version>
</dependency>

 

二、配置重试策略

你可以在配置类中定义一个RetryTemplate bean,并设置重试策略。例如,你可以设置最大重试次数、重试间隔等:

@Configuration
@EnableRetry
public class RetryConfig {

    @Bean
    public RetryTemplate retryTemplate() {
        RetryTemplate retryTemplate = new RetryTemplate();

        FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
        fixedBackOffPolicy.setBackOffPeriod(2000L); // 2秒重试间隔
        retryTemplate.setBackOffPolicy(fixedBackOffPolicy);

        SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
        retryPolicy.setMaxAttempts(3); // 最多重试3次
        retryTemplate.setRetryPolicy(retryPolicy);

        return retryTemplate;
    }
}

三、在业务方法中使用

 你可以使用RetryTemplateexecute方法来包裹你的RestTemplate调用:

@Service
public class MyService {

    private final RestTemplate restTemplate;
    private final RetryTemplate retryTemplate;

    public MyService(RestTemplate restTemplate, RetryTemplate retryTemplate) {
        this.restTemplate = restTemplate;
        this.retryTemplate = retryTemplate;
    }

    public void makeRequest() {
        retryTemplate.execute(context -> {
            // 这里执行你的RestTemplate请求
            // 如果请求失败,RetryTemplate会自动重试
            ResponseEntity<String> response = restTemplate.getForEntity("http://example.com", String.class);
            // 根据需要处理响应
            return null; // 返回值可以是任何类型,这里返回null
        });
    }
}