2013-03-17 6 views
9

ich meine Jobs rennen mit Quarz mit einem Cron-Ausdruck alle 50 Sekunden:Cron Ausdruck alle 50 Sekunden in Quarz

Cron_Expression = "0/50 * * * * ?" 

Was passiert, ist, dass meine Arbeit in den Sekunden läuft: 50, 60, 50 , 60, ... und nicht alle 50 Sekunden! und läuft nicht bei der zweiten "0".

Was ist der richtige Cron-Ausdruck alle 50 Sekunden, beginnend bei 0?

+0

Haben Sie versucht */50 anstelle von 0/50? – NilsH

+0

es ist das gleiche! , irgendeine andere Idee? – Yosefarr

+0

Werfen Sie einen Blick hier Cron Ausdruck Generator - Quartz https://www.freeformatter.com/cron-expression-generator-quartz.html –

Antwort

9

Die Syntax '/' gibt das Inkrement während des Zeitraums und nicht ein Wiederholungsintervall an. Zugegeben, ein subtiler und verwirrender Unterschied.

In diesem Fall gibt es während der 1 Minute nur eine verfügbare Schrittweite (50 Sekunden). Die erste Zahl gibt den Wert an, mit dem zu beginnen ist, in diesem Fall 0. Das Angeben von '*' vor dem '/' entspricht der Angabe von 0. Der Auftrag wird also nur auf die Minute (0 und 60 sind austauschbar) und auf 50 Sekunden ausgelöst .

Wenn die Periode durch mehrere Inkremente geteilt werden kann, z. B. 0/10, wird sie für jede dieser Zeiten ausgelöst, z. B. bei 10, 20, 30 usw. Sekunden.

Wenn Sie möchten, dass ein Auftrag in regelmäßigen Abständen ausgelöst wird, können Sie einen Quartz SimpleTrigger mit einem repeatInterval angeben.