web-dev-qa-db-fra.com

Comment exécuter toutes les 25 secondes dans l'ordonnanceur Quartz?

J'utilise l'API Quartz Scheduling pour Java. Pourriez-vous m'aider à courir toutes les 25 secondes en utilisant cron-expression. C'est juste un délai. Par exemple, la séquence est la suivante: 0:00, 0:25, 0:50, 1:15, 1:40, 2:05, etc. la séquence recommence à la seconde 0 . Merci.

16
David

Je ne pense pas que l'expression cron vous permettra de le faire, mais vous pouvez utiliser

SimpleScheduleBuilder.repeatSecondlyForever( 25 )

comme 300 (5 minutes) est un multiple de 25, il se répète automatiquement.

15
rediVider

Si vous souhaitez qu'un travail soit déclenché à un intervalle régulier, vous pouvez utiliser une variable Quartz SimpleTrigger avec une variable repeatInterval spécifiée.

9
darrenmc

Avec Quartz 2.1.5 cela aidera:

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0/20 * * * * ?"))
    .build();
8
ozhanli

La seule façon de faire cela avec un déclencheur cron est tellement compliquée qu’elle est inutile; vous êtes bien mieux avec le SimpleTrigger d'autres réponses. Néanmoins, s'il doit être cron, vous devez configurer cinq déclencheurs différents:

 0/25 0/5 * * * *
15/25 1/5 * * * *
 5/25 2/5 * * * *
20/25 3/5 * * * *
10/25 4/5 * * * *

Le premier déclencheur se déclenche à 0:00:25, 0:00:50; ensuite, le deuxième déclencheur se déclenche à 0:01:15 et 0:01:40; le troisième à 0:02:05, 0:02:30, 0:02:55; le quatrième à 0:03:20, 0:03:45; et enfin le cinquième à 0:04:10 et 0:04:35. Le premier déclencheur reprend alors à 0:05:00, etc.

Cela ne fonctionne que parce que 25 secondes se divisent uniformément en 5 minutes (ce qui équivaut à une heure). Si vous le vouliez toutes les23secondes? Oublie ça!

6
dcsohl
3
leef

Vous pouvez planifier l'exécution du travail en permanence, mais limiter la fréquence à l'aide de Throttler de Camel. 

<route>
  <from uri="jms:queue:TestQueue"/>
  <!-- throttle 1 messages per 25 sec -->
  <throttle timePeriodMillis="25000">
    <constant>1</constant>
    <to uri="bean:TestBean?method=testMethod"/>
  </throttle>
</route>
0
Joe

Vous ne pouvez pas avoir un tel programme pour le quartz.

Une des choses que vous pouvez faire est de planifier l'exécution d'un travail d'encapsuleur toutes les 5 secondes et de n'effectuer qu'un travail toutes les cinq exécutions.

0
Stephen Denne