SpringBoot的异步调用,异步调用类似与定时任务,使用起来简单方便。
首先要在springboot项目的启动上添加@EnableAsync开启异步监控,自动扫描。没有这个主角儿一切都是扯淡。
第二步就是创建异步任务组件,把@Async加到需要异步执行的方法上即可,注解丢了就变成同步任务了。注意该异步方法必须是 public 的。这个示例类里面写了俩个方法,一个sleep1000毫秒,另一个sleep3000毫秒。
异步步方法如果是没有返回值,那就和常规方法样写,有返回值那么返回值类型就是Future。这个接口Future专门接收异步响应。具体的结果类型为AsyncResult,支持泛型。
第三写好控制类。通过注解把服务添加进来,统计了个执行时间,由此可以看出来确实是异步调用。
此图即为异步调用耗时,两个任务是各干各的。
此处为同步执行,执行完一个再执行另一个。
异步调用如果出现了异常,使用者很难发现的。最好通过实现AsyncTaskExecutor自定义处理。异步调用通常用在发短信、发送邮件、消息推送 、运维凌晨自动化操作等。