Я разработал задачу, которая запускает и удаляет операторы из postgresql старше x дней.
@Override
protected TedResult processTask(Void taskData, TedTask task) {
try {
statementService.deleteStatements(LocalDate.now()
.minusDays(deletionDays));
} catch (Exception e) {
logger.error("ApplicationError deleting statements", e);
return TedResult.error(e.getMessage());
}
return TedResult.done();
}
Часть statementService.deleteStatements(LocalDate.now().minusDays(deletionDays));
вызывает метод, который обращается к БД и удаляет состояния:
@Modifying
@Transactional
void deleteByIdCreatedDateBefore(LocalDate expiryDate);
Теперь моя проблема в том, что слишком много операторов нужно обработать, я говорю о сотнях тысяч, и время ожидания этой задачи истекло, потому что он не удаляет все операторы в данный момент времени. Поэтому я подумываю переделать логи c удаления, чтобы он удалялся как одно за другим без тайм-аута и сбоя. Как я мог это сделать? Или есть какие-то другие решения, как сделать эту задачу к sh доказательством?