我写的方法比我想要的花费更多的时间。它取决于外部系统的响应,因此它很慢。我对此没有太多控制权。由于该方法,我无法等待该时间段,因此我的要求是,在初始化该方法并提供所需的参数后,该方法应在后台运行,而调用此耗时方法的父方法将完成其执行。
我已经使用spring的@Async注释将方法声明为异步方法。从RestController调用此特定方法,该方法将在此异步方法完成执行之前完成其执行。 我已经声明了自定义执行程序,并将其映射到dispatcher-servlet.xml中。
该方法正在异步执行,但是即使异步方法仍然不完整,调用方方法完成执行的那一刻也会突然停止执行。我如何实现即使调用方方法更早完成,异步方法也完成了执行。我不能在调用方方法中等待异步方法完成其执行。
代码示例 @服务 类TimeConsumingService {
@Async("customExecutor")
public void callTimeConsumingService( ){
//This call takes time between 50000 miliseconds to 70000 miliseconds
}
}
//Caller Method
@RestController
@RequestMapping("rest/document/content")
public class CallerController
{
@Autowired
TimeConsumingService timeConsumingService;
@LoggingAdvice
@RequestMapping(value="/request", method = RequestMethod.POST )
public String requestContent( @RequestParam(value = "file") MultipartFile file) throws Exception, IOException
{
timeConsumingService.callTimeConsumingService();
}
}