重试策略/框架,用于对失败插入的结果进行重试

ahy6op9u  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(428)

我正在用数据库的一些输入对象进行服务调用。很少有对象成功,其余对象失败是有原因的。我想要一个指数重试策略来触发对失败对象的相同调用。
在java中有没有什么框架可以用来定义重试策略
示例调用

Output output = mDbService.persist(List<Objects> objects)

服务调用的输出如下

class Output {
    int successCount;
    List<FailedObject> failedObject;
}

// Each failedObject has a structure

class FailedObject {
   Object object;
   int errorCode; // Some are retryable and other are not.
}
83qze16e

83qze16e1#

我不知道,一个框架似乎有些过分,但也许我误解了你的问题。
像这样的东西能满足你的需要吗?

Output output = mDbService.persist(objects);
while(output.failedObject.size() > 0){
    List<Object> retryList = new ArrayList<>();
    for(FailedObject failed:output.failedObject){
        if(shouldRetry(failed.errorCode)){
            retryList.add(failed.object);
        }
    }
    output = mDbService.persist(retryList);
}

当然,您还必须提供一个检查错误代码并执行逻辑以确定是否应该重试关联对象的实现。

private boolean shouldRetry(int errorCode){
    // your logic here
}

相关问题