Spring MVC, проблема с sheduler' ом
Столкнулся с проблемой на, вроде бы, тривиальной задаче. Есть приложение Spring MVC, есть несколько методов, которые должны выполнятся по расписанию. Ок, делаем, выполняются, вроде бы все хорошо, а не совсем - метод запускается дважды:
2020-04-26 22:52:35 INFO SheduledReceipts:28 - Sheduler method started
2020-04-26 22:52:35 INFO SheduledReceipts:29 - Job started
2020-04-26 22:52:37 INFO SheduledReceipts:28 - Sheduler method started
2020-04-26 22:52:37 INFO SheduledReceipts:29 - Job started
2020-04-26 22:52:40 INFO SheduledReceipts:35 - Job finished
2020-04-26 22:52:42 INFO SheduledReceipts:35 - Job finished
Причем, как показал эксперимент, ни от реализации sheduler'а, ни от триггера запуска, это не зависит никак. Пробовал и "quartz", и аннотации spring, и cron, и фиксированную задержку - результат одинаковый. Помогите пожалуйста разобраться где я туплю. Ниже код на кварце. Задача, которая должна выполняться (логика удалена):
@Component
public class SheduledReceipts implements Job {
private static final Logger logger = LoggerFactory.getLogger(SheduledReceipts.class);
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
logger.info("Sheduler method started");
logger.info("Job started");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
logger.info("Job finished");
}
}
Кусок spring configuration:
@Bean
public JobDetailFactoryBean jobDetail() {
JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
jobDetailFactory.setJobClass(SheduledReceipts.class);
Map<String,Object> jobMap = new HashMap<String,Object>();
jobMap.put("name", "RAM");
jobDetailFactory.setJobDataAsMap(jobMap);
jobDetailFactory.setGroup("cron");
jobDetailFactory.setName("Sheduled Receipts");
jobDetailFactory.setDurability(true);
return jobDetailFactory;
}
@Bean
public SimpleTriggerFactoryBean trigger() {
SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
trigger.setJobDetail(jobDetail().getObject());
trigger.setRepeatInterval(120000);
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
return trigger;
}
@Bean
public SchedulerFactoryBean scheduler() {
SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
schedulerFactory.setTriggers(trigger().getObject());
return schedulerFactory;
}