У меня есть приложение на Java, Spring, в котором я планирую некоторые отчеты.Компонент выглядит так:
@Component
public class RegisterReportSchedules implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private ThreadPoolTaskScheduler ts;
private List<String> reportSchedules; //contains list of report schedules
@Autowired
private SomeTask sometask;
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
reportSchedules.forEach((String schedule) -> {
ReportSchedule reportSchedule = new ReportSchedule(schedule,
propertiesUtil.getProperty(schedule + "." + Constants.CRON));
ts.schedule(new ReportTask(reportSchedule),
new CronTrigger(reportSchedule.getCronExpression()));
});
}
class ReportTask implements Runnable {
private ReportSchedule schedule;
public ReportTask(ReportSchedule schedule) {
this.schedule = schedule;
}
@Override
public void run() {
sometask.process(schedule);
}
}
}
Скажем, у меня есть 5 reportSchedules
для обработки.После того, как все 5 ReportTasks
были завершены, мне нужно записать в таблицу БД одну запись, чтобы сказать, что все задачи отчета выполнены.
Но как я могу отследить, как эта информация о каждом расписании отчетов завершается в моей заявке?
Нужно ли записывать в таблицу базы данных для каждого выполненного расписания, или в Spring
есть лучшая альтернатива, которая вызовет какое-либо событие уведомления, которое я затем смогу использовать для записи события ALL COMPLETED
встол?Цените, если даны некоторые ответы с примерами.