Я написал метод, который занимает больше времени, чем я желаю. Это зависит от внешних систем для отклика, так что это медленно. Я не имею большого контроля над этим. Из -за этого метода я не могу дождаться того времени времени, поэтому мое требование состоит в том, что после инициализации этого метода и предоставил необходимые параметры, он должен работать в фоновом режиме, в то время как родительский метод, который называется этот метод потребления, завершит выполнение. < /p>
Я использовал @async Annotation of Spring, чтобы объявить метод асинхронным. Этот конкретный метод вызывается из RestController, который завершит выполнение до того, как этот асинхронный метод завершит выполнение.
Метод выполняет асинхронно, но в тот момент, когда вызывающий вызывающий метод завершает выполнение, даже если асинхронный метод все еще неполный, прекращает выполнение Внезапно. Как я могу достичь того, что асинхронный метод завершает выполнение, хотя метод вызывающего вызова заканчивается раньше. Я не могу ждать в методе абонента, когда асинхронный метод завершит его выполнение. < /p>
Пример кода
@service
class timeconsumingservice {< /p>
@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();
}
}
Подробнее здесь: https://stackoverflow.com/questions/590 ... chronously