Я пытался использовать опцию Callable, чтобы установить тайм-аут для вызова функции, при этом сам устанавливая продолжительность тайм-аута в файле конфигурации Spring Boot (spring.mvc.async.request-timeout).
Код делаетВозврат по истечении установленного времени ожидания, но проблема в том, что сама функция продолжает выполнение.
У меня нет доступа к исходному коду этой функции, так как это сторонняя библиотека, поэтому у меня нетспособ установить проверку прерывания в этом коде.
Есть ли способ принудительно завершить функцию / поток после истечения времени ожидания?Использую ли я неправильный путь здесь, и есть ли другой способ достижения этой цели?
Пример текущего кода, который «возвращается» по истечении времени ожидания, но на самом деле не останавливает выполнение этого кода вфон:
@RequestMapping(value = "/api/test", method = RequestMethod.POST, produces = "application/json")
public Callable<ResponseEntity<String>> test(@RequestParam(...) Boolean bbb) {
return new Callable<ResponseEntity<String>>() {
@Override
public ResponseEntity<String> call() throws Exception {
try {
<POTENTIALLY LONG 3RD-PARTY FUNCTION CALL HERE>
.....
} catch (Exception e) {
return new ResponseEntity<String>("..." }", HttpStatus.BAD_REQUEST);
}
}
};
}
Спасибо.