J'ai une application Spring Boot avec divers planificateurs qui utilisent l'annotation @Scheduled. Certains des programmes sont configurés en utilisant fixedRate, d'autres utilisent cron. Les horaires fixedRate fonctionnent bien, mais j'ai remarqué qu'au cours du dernier mois, l'heure réelle à laquelle le cron planifie le feu varie de 1 à 2 heures par jour.Printemps Cron programmé des tâches tirées au mauvais moment
dire un emploi avec une configuration cron de
@Scheduled(cron = "0 0 2 * * *")
se déclenche à 3h00 au lieu de 2h00. Cela n'arrive pas tous les jours non plus. Il fonctionnera en même temps pendant quelques jours d'affilée, puis il se passe quelque chose et il s'éteint une heure de plus chaque fois qu'il est exécuté jusqu'à ce que je redémarre l'application.
L'heure du système sur le serveur est exacte, je suis à court d'idées ici. Est-ce que quelqu'un a déjà rencontré ça?
EDIT 1
J'ai mis dans une exploitation forestière afin de déterminer si les travaux ont été mal tir au même intervalle, et les résultats semblent aléatoires. Voici les début/fin des temps pour le travail cron mentionné ci-dessus sur trois jours:
Format: Calendar.getInstance().getTime() (System.currentTimeMillis())
Start: Sat Oct 21 03:14:15 CDT 2017 (1508573655778)
End: Sat Oct 21 03:22:24 CDT 2017 (1508574144708)
Start: Sun Oct 22 02:26:58 CDT 2017 (1508657218774)
End: Sun Oct 22 02:35:12 CDT 2017 (1508657712492)
Start: Mon Oct 23 02:00:03 CDT 2017 (1508742003072)
End: Mon Oct 23 02:08:11 CDT 2017 (1508742491493)
Hey Blake. J'ai ajouté un enregistrement vendredi dernier et je l'ai laissé passer la fin de semaine pour obtenir des résultats. J'ai posté ces résultats dans ma question originale. –
Oui, il semble que les heures de début ne tirent pas sur un calendrier si c'est ce qu'ils sont censés faire. Quelles autres annotations avez-vous? est la méthode programmée dans un composant de ressort, un contrôleur ou une classe de service? – Blake
Enfin compris. Je n'avais pas d'installation ThreadPoolTaskScheduler, donc il n'y avait pas assez de taille de pool pour supporter tous mes jobs planifiés. L'un tirait, les autres étaient soit bloqués, soit mis sur une sorte de file d'attente interne, mais quand ils finissaient par tirer, l'horloge cron est décalée de quelque temps qu'ils aient été mis en file d'attente/bloqués. –