У нас есть требование, при котором мы должны собирать документы за Х минут в базе данных, где Х может быть 30-60.После того как эти документы собраны в базе данных, мы должны отправить их в отдельную службу через вызов REST.
Поскольку эти документы не будут очень большими, мы объединяем их вместе, а затем объединяем.
Теперь эти документы нужно отправить через определенный промежуток времени, поэтому я подумал о создании отдельного потока, который извлекает записи из базы данных, передает их в службу, и как только служба отвечает 200 OK, я удаляю эти записииз базы данных и поток переходит в спящий режим на X минут.
class PushDocumentsToService extends Thread{
DocumentRepository documentRepository;
DocumentProcessingService documentProcessingService
public void run(){
List<Document> list = documentRepository.getAllDocuments();
Integer statusCode = documentProcessingService.sendDocuments(list);
if(statusCode == 200)
documentRepository.remove(list);
try{
Thread.sleep(30*60);
}catch(..){..}
}
}
Теперь несколько моих коллег посоветовали мне не использовать Thread.sleep в моем коде.Я не могу понять вредные последствия
Thread.sleep ()
Кроме того, какие методы используют библиотеки и фреймворки, как Spring Scheduler и Google Guava для планированиязадача