当前位置: 主页 > JAVA语言

java 调用失败重试2次-更新包md5校验失败 请稍后重试

发布时间:2023-06-01 11:13   浏览次数:次   作者:佚名

昨天去面试了一家公司,没有沟通,上来就直接撸代码.

具体过程不谈,业务主要内容为 从另一个系统定时同步数据并去重.

今年java真的太卷了. 投了好多天都没有面试机会.

难得有的面试也是这样子. 难

下面是部分接口交互的代码,有注释.

获取当前页数据的接口请求:

//pageNumber 页码
//具体返回数据请自行定义
public List getPageData(int pageNumber) throws Exception {
    List pageData = null;
    int retryCount = 0;
    boolean success = false;
    //失败重试次数: 3
    while(!success && retryCount < 3) {
        try {
            pageData = getDataFromApi(pageNumber);
            success = true;
        } catch(Exception e) {
            retryCount++;
            System.out.println("Error occurred while getting page data. Retrying...");
            Thread.sleep(1000); // wait for 1 second before retrying
        }
    }
    
    if(!success && retryCount == 3) {
        throw new Exception("Max retry attempts reached. Could not get page data.");
    }
    
    return pageData;
}

在上面的方法中java 调用失败重试2次,我们首先定义一页数据的列表pageData,并将retryCount初始化为0,success初始化为false。

然后,在while循环中,我们将getDataFromApi()方法的返回值赋给pageData。如果该方法的调用发生异常,我们将retryCount加1,并在控制台输出错误信息。然后线程挂起1秒钟后重试,直到retryCount等于3或者请求成功返回数据。

最后,如果还是无法获取数据,我们将抛出异常。否则,我们将返回数据。

接下来是调用该方法的代码:

public void getAllData() throws Exception {
    int pageNumber = 1;
    //具体返回数据结构请自行定义
    List allData = new ArrayList<>();
    List pageData = getPageData(pageNumber);
    
    while(pageData != null && pageData.size() > 0) {
        allData.addAll(pageData);
        pageNumber++;
        pageData = getPageData(pageNumber);
    }
    //去重就不做了. 有多重方式,自己查下吧.
    
    System.out.println("Total number of data items: " + allData.size());
}

在上面的代码中,我们首先将pageNumber初始值设置为1java 调用失败重试2次,并定义一个空的列表allData用于保存所有数据。

然后我们调用getPageData(pageNumber)方法来获取第一页数据,并将其赋给pageData。

在while循环中,我们将pageData添加到allData中,将pageNumber加1,然后再次调用getPageData方法获取下一页数据,直到获取到为空列表。

最后,我们输出总共获取到的数据项数。

使用以上的方法进行循环调用获取全部数据的操作,可以实现高效且健壮的数据获取功能。

最后. 希望大家今年都能找到好工作...