Ich habe @Async -Annotation der Frühling verwendet, um die Methode als asynchron zu deklarieren. Diese bestimmte Methode wird von restController aufgerufen, die ihre Ausführung beenden, bevor diese asynchrone Methode die Ausführung beendet.
Die Methode wird asynchron ausgeführt, aber die MOMMMEL CALLER -Methode beendet die Ausführung, obwohl die asynchrone Methode noch unvollständig ist, stoppt Stopps abrupt ausführen. Wie kann ich das erreichen, dass die asynchrone Methode ihre Ausführung beendet, obwohl die Anrufermethode früher abgeschlossen ist. Ich kann in der Anrufermethode nicht warten, bis die asynchrone Methode zur Beendigung der Ausführung abgeschlossen ist. < /p>
Code Beispiel
@Service
Klasse TimeconSumingService {< /p>
Code: Select all
@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();
}
}