首页 > 其他分享 >第三方接口控制请求时间处理

第三方接口控制请求时间处理

时间:2023-05-25 16:12:28浏览次数:38  
标签:return 请求 System 接口 println new 第三方 out

问题

项目中需要调用第三方接口,若第三方接口在X秒内未返回,则继续后续业务操作

代码展示

public class CheckTimeOutDemo {
    private static ExecutorService threadService = new ThreadPoolExecutor(0,20,60L,TimeUnit.SECONDS,
        new SynchronousQueue<>(), r ->{
        Thread thread = new Thread(r);
        return thread;
    });

    public static void main(String[] args) {

        String s = method(3, 6);
        System.out.println(s);
    }

    /**
     * @param threadNum 线程池的数量
     * @param timeOut   超时时限
     * @return 返回执行结果
     */
    public static String method(int threadNum, int timeOut) {
        System.out.println(new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss:SSS").format(new Date()));
      	//请求第三方接口
        Future<String> future = threadService.submit(
					() -> send());
        try {
            // futrue.get()测试被执行的程序是否能在timeOut时限内返回字符串
            return future.get(timeOut, TimeUnit.SECONDS);//任务处理超时时间设为 3 秒
        } catch (Exception ex) {
            System.out.println(new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss:SSS").format(new Date()));
            System.out.println("输出异常:" + ex);
        } finally {
            future.cancel(true);
        }
        return null;
    }

  	//模拟接口可在本地启动服务,模拟请求三方接口
    private static String send() throws IOException {
        StuRequest stuRequest = StuRequest.builder().id(111).build();
        String obstr = new Gson().toJson(stuRequest);
        RequestBody body = RequestBody.create(MediaType.parse("application/json"), obstr);
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(200, TimeUnit.SECONDS)
            .readTimeout(200, TimeUnit.SECONDS)
            .writeTimeout(200, TimeUnit.SECONDS).build();
        Request request = new Request.Builder().url("http://localhost:8080/login/getstudent").post(body).build();
        Response response = okHttpClient.newCall(request).execute();
        System.out.println(response.toString());
        return response.body().string();
    }
}

注意事项

  1. future.cancel(true) 并不能中断请求,请求结果仍会返回结果。

参数true:如果任务已经被执行,则会尝试中断处理。(中断处理会改变中断标志位,任务应该判断 isInterrupted()或者在任务过程中使用sleep,这样任务才可以被中断)
参数false:如果任务已经被执行,则会等待任务执行完毕。如果是个无线循环任务,将会无法停止。

  1. 若接口超时,需对超时进行处理,可catch TimeoutException 异常,进行超时业务逻辑处理。

标签:return,请求,System,接口,println,new,第三方,out
From: https://www.cnblogs.com/daidaideaguan/p/17431622.html

相关文章

  • 基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)
    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票!我的投票地址:点击为我投票文章目录前言1.获取歌曲搜索列表api接口2.获取单个歌曲详细信息包括歌词3.总结前言首先说明,本教程仅供个人学习,研究使用,禁止用于任何的商业和非法用途。(手动狗头)之所以要研究这个,是因为我想......
  • Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。
    文章目录1.前言2.使用腾讯云短信接口发送短信3.java连接数据库4.部署到服务器(如果你有的话)目录Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。Fdog系列(二):html写完注册页面之后怎么办,用java写后台响应呀。文章中出现的源码获取方式:评论区留下邮箱地址。创作......
  • 电商erp系统选品,跨境ERP系统选品,api接口采集数据
    ​  电商ERP系统选品优势:1.自动化选品:电商ERP系统可以根据销售数据、客户反馈、市场趋势等因素,自动化地筛选出热销商品,快速进行选品;2.数据分析功能:电商ERP系统可以对历史销售数据进行分析,得出销售趋势、客户偏好等信息,有利于精细化选品;3.库存管理:电商ERP系统可以管理商......
  • 报错问题:谷粒商城关于pubsub、publish报错,无法发送查询品牌信息的请求
    1、npminstall--savepubsub-js2、在src下的main.js中引用:①importPubSubfrom'pubsub-js'②Vue.prototype.PubSub=PubSub ......
  • 淘宝API接口的各种应用
    淘宝API接口是一种强大且多功能的工具,可帮助开发者利用淘宝平台的海量数据并以此更高效地完成各种任务。不论是想构建一个电商网站,还是想开发一个淘宝购物助手,淘宝API都能帮助你实现这些目标。下文将介绍淘宝API接口的各种特性,帮助开发者全面了解这一工具,更好地利用它。获取商品数......
  • API接口获取的商品详情该如何使用
    获取到商品API接口返回的商品详情数据后,我们可以将其用于以下方面:商品展示:通过获取到的商品详情数据,我们可以展示商品信息,包括商品名称、价格、商品图片、描述等信息。我们可以将这些信息显示在商品详情页上,以供用户查看和了解,提高用户对商品的认知度和购买兴趣。......
  • 如何用GPT开发后端java接口
     需求如图:一个特别小的项目,时间也很紧,就是要做到excel数据上传,然后根据每天上传的数据来生成折线图和统计表,并供大屏展示第一步:把表结构和逻辑描述给第二步得到代码:    第三部:粘贴跑通,一个接口花费约几分钟。。有个问题是这次我为了写博客重新提问得到的接口代......
  • 淘宝API接口的各种应用
    淘宝API接口是一种强大且多功能的工具,可帮助开发者利用淘宝平台的海量数据并以此更高效地完成各种任务。不论是想构建一个电商网站,还是想开发一个淘宝购物助手,淘宝API都能帮助你实现这些目标。下文将介绍淘宝API接口的各种特性,帮助开发者全面了解这一工具,更好地利用它。获取商品......
  • 获取API接口返回的商品详情数据后该如何使用
    获取API接口返回的商品详情数据后,我们可以使用以下方式将其处理和利用:数据展示:我们可以将API接口返回的商品详情数据以列表、表格、图形等形式展示给用户,以便他们更好地了解商品的基本信息、特征、评价等。我们可以根据不同的需求,对商品数据进行筛选、排序、过滤等操作来展示......
  • 选择小程序第三方开发框架,你需要知道这些
    在选择小程序第三方开发框架时,我们需要综合考虑开发者技术栈、项目需求和目标平台等因素。Taro是一个多端统一开发框架,适合需要覆盖多个平台的开发者,最终的选择应该基于个人的技术背景和项目需求,同时也要关注框架的稳定性、社区支持和文档资源等方面。只有选择最适合自己的开发工......