import org.springframework.retry.annotation.Retryable;
import org.springframework.retry.annotation.Backoff;
import org.springframework.stereotype.Service;
@Service
public class RetryService {
@Retryable(
value = {Exception.class}, // 指定哪些异常需要重试
maxAttempts = 5, // 最大重试次数
backoff = @Backoff(delay = 1000) // 重试延迟策略
)
public void retryOperation(String data) {
// 这里是你的业务逻辑代码,可能会抛出异常
someRiskyBusiness(data);
}
@Recover
public void recover(Exception e, String data) {
// 当重试失败后,会执行这个方法
log.error("重试失败: " + e.getMessage());
// 这里可以执行恢复措施,比如发送报警邮件或者消息
}
private void someRiskyBusiness(String data) {
// 这里模拟一个可能抛出异常的方法
if ("fail".equals(data)) {
throw new RuntimeException("模拟的异常");
}
// 正常的业务逻辑
}
}
这个代码示例展示了如何在Spring Boot应用中使用Spring Retry来重试一个可能失败的操作。retryOperation
方法包含了业务逻辑,并且用@Retryable
注解标记,以便在遇到指定异常时进行重试。maxAttempts
属性设定了最大重试次数,backoff
属性定义了重试的延迟策略。如果重试失败,recover
方法将被调用,执行恢复的操作,比如记录日志并发送报警。