web-dev-qa-db-fra.com

Expression de printemps pour chaque après 30 minutes

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>
52
d-man
<property name="cronExpression" value="0 0/30 * * * ?" />
45
d-man

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)

114
stacker

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:

54
fedorqui

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

7
shareef

Si quelqu'un utilise @Sceduled, cela pourrait fonctionner pour vous.

@Scheduled(cron = "${name-of-the-cron:0 0/30 * * * ?}")

Cela a fonctionné pour moi.

0
Shaul Hameed