场景:微信公众号授权页面,公众号所有者扫码授权时,拉取公众号下的粉丝信息,完成后跳转至授权成功页面。
问题:当粉丝数量很大的时候,拉取用户信息(包括网络请求)耗时很长,授权页面会因为请求超时挂掉。(很多耗时操作都要考虑到用户体验,先返回授权成功页面,耗时操作在异步执行)
解决方法:异步执行耗时的拉取用户信息操作。SpringBoot中直接可以@Async注解实现异步调用。
@Controller
@RequestMapping("/open/auth")
public class AuthCallbackController extends SuperController {
@RequestMapping("/callbacktest")
public String callback()throws Exception{
new CoreTask().task1();
new CoreTask().task2();
new CoreTask().task3();
return "auth/authSuccess";
}
}
CoreTask类,执行测试的三个方法上加上注解@Async:
@Component
public class CoreTask {
@Async
public void task1()throws Exception{
Thread.sleep(1000);
System.out.println("我是任务1");
}
@Async
public void task2()throws Except