一、添加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;
}
}
三、在业务方法中使用
你可以使用RetryTemplate
的execute
方法来包裹你的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
});
}
}