J'essaie de planifier une tâche au printemps qui doit être exécutée tous les jours à minuit. J'ai suivi le guide officiel de Spring et créé la classe de planificateur comme ci-dessous:
@Component
public class OverduePaymentScheduler {
@Scheduled(cron = "0 0 0 * * *")
public void trackOverduePayments() {
System.out.println("Scheduled task running");
}
}
Cependant, la tâche ne s'exécute pas lorsque l'horloge atteint 12 heures. J'ai obtenu l'expression cron de la documentation de l'ordonnanceur quartz à cette adresse lien .
Le planificateur est correctement exécuté si je modifie l'expression "cron" par "*/10 * * * * *", qui s'exécute toutes les dix secondes.
Alors qu'est-ce que je fais mal?
Je l’ai finalement fait fonctionner avec cette expression cron 0 0 0 * * *
, Mais je devais définir le fuseau horaire de la classe du planificateur comme ceci. @Scheduled(cron = "0 0 0 * * *",zone = "Indian/Maldives")
Ce sont des formats valides pour les expressions cron:
0 0 * * * *
= le sommet de chaque heure de chaque jour.*/10 * * * * *
= toutes les dix secondes.0 0 8-10 * * *
= 8, 9 et 10 heures de chaque jour.0 0 6,19 * * *
= 6h00 et 7h00 PM tous les jours.0 0/30 8-10 * * *
= 8h00, 8h30, 9h00, 9h30, 10h00 et 10h30 tous les jours.0 0 9-17 * * MON-FRI
= heures neuf à cinq jours de la semaine0 0 0 25 12 ?
= tous les jours de Noël à minuitLe motif est:
second, minute, hour, day, month, weekday
Donc, votre réponse est:
0 0 0 * * *
Veuillez utiliser le modèle ci-dessous pour 00h00 tous les jours:
// at 12:00 AM every day
@Scheduled(cron="0 0 0 * * ?")
J'ai vérifié votre modèle Cron sur ce site Web: http://www.cronmaker.com/ .
Il dit motif 0 0 0 * * *
comme invalide.
Vous pouvez utiliser le format ci-dessous pour répondre à vos besoins:
0 0 23 * * *
Depuis les heures commence de 0 à 23 pour la configuration Quartz. Vous pouvez vous référer à cette lien pour plus d'informations.