后台有些接口耗时非常长,如果采用同步处理机制,前台等待时间过长,这时需要改异步操作。实现方法有很多,例如走消息队列,接口收到请求后,推送消息即返回。处理由其他服务程序来完成。这种方法,业务分散在两个服务中完成,不利于业务内聚。这种方法适合把一些公用操作封装为一个处理服务中心,各业务服务通过消息队列发消息。
一般业务,平台推荐在自己服务中通过线程解决。创建线程可以自己完成,但系统推荐采用CompletableFuture机制,实现步骤如下:
1、定义自己的业务处理类:
@Service
public class Example implements Runnable{
public void run(){
//比较耗时的业务处理
}
}
其中最重要的是实现run函数
2、接口里调用:
注入上面的Example 类
private Example example;
接口里
CompletableFuture.runAsync(example);
然后返回即可
3、运行结果可以写到数据库里,其他接口访问数据库获取运行过程和结果即可
同时通过平台消息/短信/邮件等方式通知发起者