Принудительный таймаут для задачи
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 15.02.18 18:02
Оценка:
Есть набор сервисов на Spring. Сервисы активно взаимодействуют с внешними компонентами, зачастую через сторонние SDK. Некоторые из этих SDK могут выдавать очень длительные задержки. Например, вызов Azure SDK может спокойно заснуть на 20 минут при некоторых обстоятельствах.
Мне нужно как-то это дело обрабатывать. Ждать 20 минут нет ни желания, ни возможности — пользователи будут считать, что сервис повис. Нужно принудительно прервать задачу и вернуть какой-нибудь TimeoutException, чтоб приложение могло показать пользователю сообщение и спросить у него что делать. Azure SDK такого функционала напрямую не выставляет. Там есть интерцепторы, которые наверное можно использовать для этих целей, но пока хочется более простого решения — обернуть вызовы в какую-нибудь обертку, которая будет вызывать внешний сервис с принудительно выставленным максимально допустимым временем отклика и возвращать выполнение в случае отсутствия отклика.
Думается мне, что должны быть какие-то готовые библиотеки-обертки для этого. Задача вроде вполне типовая. Можете посоветовать что-нибудь простое в употреблении?
С уважением, Artem Korneev.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.