Je dois exécuter le travail suivant après toutes les 30 minutes. S'il vous plaît vérifier mon expression cron, est-ce correct?
"0 0 0 * * 30"
Voici une définition de travail cron complète du fichier Spring configuration correspondant:
<bean id="autoWeblogPingTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetailForWeblogPing"/>
<!-- run every 35 minutes -->
<property name="cronExpression" value="0 0 0 * * 30" />
</bean>
<property name="cronExpression" value="0 0/30 * * * ?" />
Selon le Tutoriel Quartz-Scheduler Il devrait être value="0 0/30 * * * ?"
L'ordre des champs de l'expression cronExpression est
1. secondes
2 minutes
3 heures
4. jour du mois
5 mois
6. jour de la semaine
7.Année (champ facultatif)
Assurez-vous d'avoir au moins 6 paramètres ou vous obtiendrez une erreur (l'année est facultative)
Graphiquement, la syntaxe cron pour Quarz est la suivante ( source ):
+-------------------- second (0 - 59)
| +----------------- minute (0 - 59)
| | +-------------- hour (0 - 23)
| | | +----------- day of month (1 - 31)
| | | | +-------- month (1 - 12)
| | | | | +----- day of week (0 - 6) (Sunday=0 or 7)
| | | | | | +-- year [optional]
| | | | | | |
* * * * * * * command to be executed
Donc, si vous voulez exécuter une commande toutes les 30 minutes, vous pouvez dire l’une de ces choses:
0 0/30 * * * * ?
0 0,30 * * * * ?
Vous pouvez vérifier les expressions crontab en utilisant l’une des méthodes suivantes:
dans l'application web Java printemps ce qui a fonctionné pour moi
cron="0 0/30 * * * ?"
Cela déclenchera par exemple 10h00 puis 10h30 etc ...
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">
<beans profile="cron">
<bean id="executorService" class="Java.util.concurrent.Executors" factory-method="newFixedThreadPool">
<beans:constructor-arg value="5" />
</bean>
<task:executor id="threadPoolTaskExecutor" pool-size="5" />
<task:annotation-driven executor="executorService" />
<beans:bean id="expireCronJob" class="com.cron.ExpireCron"/>
<task:scheduler id="serverScheduler" pool-size="5"/>
<task:scheduled-tasks scheduler="serverScheduler">
<task:scheduled ref="expireCronJob" method="runTask" cron="0 0/30 * * * ?"/> <!-- every thirty minute -->
</task:scheduled-tasks>
</beans>
</beans>
Je ne sais pas pourquoi mais cela fonctionne sur mon développement et ma production locaux, mais d'autres changements si je le faisais, je dois faire attention car cela peut fonctionner localement et se développer mais pas sur la production
Si quelqu'un utilise @Sceduled, cela pourrait fonctionner pour vous.
@Scheduled(cron = "${name-of-the-cron:0 0/30 * * * ?}")
Cela a fonctionné pour moi.