Мне нужно сделать что-то, что я не знаю, что является лучшей практикой для этого.Spring Task Async и Delayed
После того, как я отправил один запрос на конкретную службу, этот возвращает ОК и ставит в очередь мой запрос. У меня есть служба обратного вызова, которая используется для уведомления, когда она заканчивается.
Проблема в том, что весь процесс может занять много времени и времени, не уведомляя ничего, и после этого мне нужно учитывать тайм-аут.
Приложение SpringBoot APP, и я рассматривал возможность использования аннотаций @EnableAsync и @Async для сервисного метода со временем сна.
@Configuration
@EnableAsync
public class AsyncConfiguration implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(500);
executor.setThreadNamePrefix("TIMCLL-");
executor.initialize();
return executor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
// TODO Auto-generated method stub
return null;
}
}
. . .
@Async
public void verifyStatusTimPayment() throws InterruptedException {
Thread.sleep(5000);
logger.info("Executed after 5s " + new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").format(new Date()));
}
Проверка должна быть выполнена через 15 минут после запроса и должна произойти только один раз за запрос.
Как это сделать без создания Thread.sleep ?????