-
Notifications
You must be signed in to change notification settings - Fork 12
自定义重试策略
echisan edited this page Apr 20, 2019
·
1 revision
充实策略可以配合UploadInterceptor
以及RetryableUploadRequest
共同定义重试策略
需要重写shouldRetry
方法,也是一个模版方法模式,底层根据该返回结果判断是否重试。
重试策略
public class MyRetryUploadRequest extends RetryableUploadRequest {
@Override
public boolean shouldRetry(UploadResponse uploadResponse) {
// 根据响应的结果进行判断重试策略
// 而该响应结果可以添加自定义的拦截器配合
if (uploadResponse.getMessage().startsWith("flag")){
// 可以判断你自己自定义的code
String code = uploadResponse.getMessage().replace("flag:", "");
if (code.equals("123")){
return true;
}
}
return false;
}
}
跟重试策略配合的拦截器
public class MyRetryInterceptor implements UploadInterceptor{
// 确保线程安全
private AtomicInteger count = new AtomicInteger(0);
@Override
public boolean processBefore(UploadAttributes uploadAttributes) {
// 可以根据添加自己的处理
if (count.get()>10){
// 如果已经大于10次就不再进行上传操作了
return false;
}
return true;
}
@Override
public void processAfter(UploadResponse uploadResponse) {
// 由于(设计缺陷)这里没有提供一个存放自定义信息的容器
// 只能放在这里了,可能后续会添加
uploadResponse.setMessage("flag:123");
count.incrementAndGet();
}
}