经常会遇到一些有很高错误率的情况,比如需要从外部获取数据,而对应的网络条件又很一般,那么常常会出现一些错误和重试的情况,代码可能是这样的
public class Demo {
public Data featch() {
int current = 0;
Data data;
while (current < MAX_TRY_LIMIT) {
try {
data = service.call();
} catch (Exception ex) {
index++;
}
}
return data;
}
}
如果项目代码中这种类似的比较多就有点难管理了,而且上面这段代码只处理了重试的情况,并没有超时控制,错误追溯等等。
spring-retry是专为这种情况而生的,它被spring多个子项目使用,比如batch,integration等。
@Service…
