Использование Spring Boot 1.5.4. @Scheduled(cron = "0 * * * * ?") должен запускать задачу каждую минуту. В одной из моих систем он отлично работает каждую минуту, но в другой системе (CentOS 6.3) он не запускается каждый час, то есть он запускается в 14:58, запускается в 14:59, не запускается в 15:00, а затем бег в 15:01. Что вызовет эту проблему? как я могу отладить и выяснить причину, по которой он не работает на ожидаемом мной уровне?
Думаю, каждую минуту должно быть * / 1 * * * *?
@PushpeshKumarRajwanshi первая цифра - вторая, а вторая цифра - минуты, согласно Spring doc. Вы предлагаете `* * / 1 * * *?`
Хорошо, в таком случае да, это должно быть * * / 1 * * *?
cronmaker (cronmaker.com) предлагает выражение cron для каждой минуты 0 0/1 * 1/1 *? *




Это всего лишь гипотеза, но если предположить, что выражение Cron правильное (в противном случае просто проверьте его еще раз) и ведет себя по-разному на разных машинах, возможной причиной может быть следующее:
@Scheduled по умолчанию работает таким образом, что открывает однопоточный java.util.Timer.
Поэтому, если код выполняемого метода выполняется более одной минуты, последующий вызов будет отложен (не произойдет) только потому, что поток уже «занят».
Итак, чтобы проверить себя, попробуйте сделать следующее:
Определите метод @Scheduled так, чтобы он запускался каждую минуту, но просто выводил какое-то сообщение в журнал (так что это наверняка займет меньше одной минуты).
Если вы видите, что теперь он ведет себя правильно, значит, это действительно проблема, если нет - это должно быть где-то еще.
Вы должны протестировать это на freeformatter.com/cron-expression-generator-quartz.html