项目需要实现操作异步调用,直接上代码:
@ApiOperation("执行操作")
@PutMapping("/xxxx")
public ResultBody approval(@RequestBody @Validated Param param) {
try {
//逻辑处理
....
Future<Object> result = this.service.do(param);
//阻塞上面的方法执行,时间不超过2秒
result.get(2, TimeUnit.SECONDS);
//逻辑处理
....
}catch (TimeoutException e) {
log.error("异常:",e);
}catch (Exception e){
log.error("异常:",e);
}
return ResultBody.success()
}
/*
异步调用service中方法,注意使用方法异步注解
*/
@Async
public Future<Object> do(Param param{
//逻辑处理,
...
return new AsyncResult<>(null);
}