Я работаю над устаревшей системой, в которой в контроллере есть Thread.sleep
.Сценарий здесь заключается в том, что, как только запрос получен, он опрашивает другую службу, пока не будут выполнены критерии.Проблема в том, что поток обработки запросов заблокирован из-за опроса
Я пытаюсь заменить его на DeferredResult
, что позволяет избежать блокировки и использует метод на основе обратного вызова.Опрос будет проводиться в отдельном потоке, и после его завершения будет вызван setResult
, и пользователю будет дан ответ.
Имеет ли смысл использовать DeferredResult для опроса с интервалом?Есть ли какое-либо влияние на производительность при нагрузке?
Это код:
while (status.equals("RUNNING")) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
log.error("Error while polling for status setting Thread to sleep.", e);
}
status = requestStatus();
}
Тот, который я пытаюсь улучшить, основан на этом примере