[发明专利]一种异步请求伪装同步请求方法有效
申请号: | 202010615668.2 | 申请日: | 2020-06-27 |
公开(公告)号: | CN111752720B | 公开(公告)日: | 2023-07-07 |
发明(设计)人: | 吴修国;李耀;彭磊;杨志文 | 申请(专利权)人: | 武汉众邦银行股份有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/54 |
代理公司: | 成都正煜知识产权代理事务所(普通合伙) 51312 | 代理人: | 李龙 |
地址: | 432200 湖北省武汉市黄陂区盘龙城经济开发区汉*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 异步 请求 伪装 同步 方法 | ||
1.一种异步请求伪装同步请求的方法,其特征在于,包括如下步骤:
步骤S1、前端页面请求后端接口;
步骤S2、自定义异步执行器类,在此类自定义异步注解@Async,在对应业务处理类上使用@Async注解即可达到单独线程执行即异步请求的效果;
步骤S3、定义一个异步处理结果的类,此类中支持泛型T,泛型T来接收返回结果类;
步骤S3包括以下步骤:
步骤3.1:新建处理结果类Result,此Result为自定义结果公共类,包括:返回码code,返回信息msg,返回内容data,Result类专门接收处理结果;
步骤3.2:在被@Async注解的业务逻辑处理类A中的B方法里面远程调用第三方API,设置一个处理时长timeout,时间超过这个处理时长,去查询异步回调结果,如果有结果,则创建一个Result去接收处理结果;
步骤3.3:将处理后的Result类,通过自定义异步执行器E类的泛型T,来托管到E类中;
步骤3.4:将自定义异步执行器E类作为业务逻辑处理类A的返回值,return到上游调用接口;
步骤S4、在异步处理结果类中定义一个isDone方法,通过isDone方法,判断异步方法是否执行完成;
步骤S5、新建调用实例,在实例中通过判断isDone方法是否执行完成,来获对应的取返回处理结果;
步骤S6、前端获取处理结果,如果是正常结果,则按需求展示,如果结果为不正常,则请求一个单独的查询结果请求方法,此方法为补偿机制,防止未异步执行完成,就返回执行结果,同时页面出现友好提示,提示业务耐心等待;
步骤S7、设置前后端保持长连接,避免前后端请求超时中断。
2.根据权利要求1所述的一种异步请求伪装同步请求的方法,其特征在于,所述步骤S1包括以下步骤:
步骤1:新建API类,在API类中定义后端远程接口URL;
步骤2:通过远程RPC方式,调用远程后端的接口。
3.根据权利要求1所述的一种异步请求伪装同步请求的方法,其特征在于,所述步骤S2包括以下步骤:
步骤1:新建类,得到自定义异步执行器E类;
步骤2:在E类中申明一个Async注解,该注解利用项目启动时,自动注入到sping容器中,容器初始化的时候利用spring的AOP原理在被注解的方法上增加一个环绕行切面,生成一个动态代理E类,以达到单独起一个线程,单独执行;
步骤3:新建业务逻辑处理类A,并在业务逻辑类A的B方法上使用@Async来注解,这样B方法在执行时会以一个单独线程来执行,以达到异步处理的效果,B方法为要求异步调用的第三方API接口。
4.根据权利要求1所述的一种异步请求伪装同步请求的方法,其特征在于,所述步骤S4包括以下步骤:
步骤1:在自定义异步执行器E类中定义一个isDone方法,通过isDone方法来判断异步处理流程是否执行完成;
步骤2:isDone方法如果结果正常为ture,如果结果异常或结果为空则为false。
5.根据权利要求1所述的一种异步请求伪装同步请求的方法,其特征在于,所述步骤S5包括以下步骤:
步骤1:新建类C,C类为对外提供RPC服务类,同时也是业务逻辑处理类A的调用方;
步骤2:在 C类中通过判断异步执行器E的isDone()方法,判断异步处理的结果是否为ture,如果是ture则获取到返回结果,使用get()方法获取到公共结果Result,并返回给前端。
6.根据权利要求1所述的一种异步请求伪装同步请求的方法,其特征在于,所述步骤S6包括以下步骤:
步骤1:在前端页面获取返回结果Result,如果code为成功标识码,获取data数据按需求展示;
步骤2:如果code为失败,展示失败原因msg;
步骤3:如果code为未获取到数据,提供专门查询处理结果的接口来查询,同时页面展示友好提示,提示业务耐心等待。
7.根据权利要求1所述的一种异步请求伪装同步请求的方法,其特征在于,所述步骤S7包括以下步骤:
步骤1:设置nginx保持长连接,避免前端请求超时中断,设置nginx的proxy_read_timeout 300。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉众邦银行股份有限公司,未经武汉众邦银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010615668.2/1.html,转载请声明来源钻瓜专利网。