Springboot异步执行

 

Springboot异步执行_第1张图片

在此页面中,需求为当页面点击开始巡视后,弹出框将关闭,将请求发到后台后,由后台去处理请求。Java后台需调用下级服务获取请求结果,由于下级服务还得下发请求,所以如果同步处理请求很有可能出现请求超时的异常。


所以,考虑如下流程:

使用异步处理,页面发送请求时。后台直接返回请求的结果,由后台去调用下级服务,当后台收到响应结果,然后去更新数据库表,页面请求获取到最新的巡视结果

异步处理,按照以前的做法,可以使用原生的CompletableFuture实现异步操作

使用的是Springboot框架直接使用注解就能支持异步

在Spring环境下可以使用@Async注解搞定异步


SpringBoot要使用@Async需要以下两个步骤:

1.使用@EnableAsync开启异步;

2.定义Spring组件,使用@Component和@Async;


Springboot异步执行_第2张图片

在Springboot启动类,加上注解@EnableAsync,表示开启异步

然后在需要使用异步的方法处加上注解@Async


Springboot异步执行_第3张图片

@component就是说把这个类交给Spring管理

@Async是告诉Spring这是一个异步类

注入Mapper层,模拟调用下级服务。


Springboot异步执行_第4张图片

在需要调用的异步方法地方,注入异步类。启动服务后

使用postman模拟测试



Springboot异步执行_第5张图片

查看控制台日志可以发现...


Springboot异步执行_第6张图片

异步处理成功..且页面展示的是mapper.findAll()的结果集...说明我们的异步调用是没问题的

接下来我们来模拟一个往下级服务发的流程,如果我们的调用方也是微服务的程序直接使用

Springboot RestTemplate即可...

当然,笔者使用的是OKhttp,导入包 封装一个请求类,参数传入json字符串即可

你可能感兴趣的:(Springboot异步执行)