2012-03-24 11 views
1

In meinem Projekt erstelle ich einen sofortigen SimpleTrigger, der einen Dummy-Job aufruft (tut etwas, das länger als 30 Sekunden dauert). Ich habe die Fehlzündungsrichtlinie als MISFIRE_INSTRUCTION_FIRE_NOW festgelegt, und das Wiederherstellungsflag für Jobanforderungen wird ebenfalls auf "true" gesetzt.Unterbrochener Quarz-Auslöser wird nicht fortgesetzt

Nachdem der Job gestartet wurde (Status wechselt von READY zu RUNNING in Quartz DB store), boote ich absichtlich das gesamte System und startet den laufenden Job. Wenn das System wieder aktiv ist, sehe ich, dass der unterbrochene Job überhaupt nicht erneut ausgelöst wird.

In unserem Produktionssystem wird dies sehr weh tun, da ein Software-Update unbeabsichtigt die laufenden Jobs in dieser Instanz unterbrechen würde und diese überhaupt nicht mehr auslösen würden (ein kritischer einmaliger Job würde unfertig bleiben) unerwünschte Wellen bei bevorstehenden Jobs). Dies ist aus unserer Sicht höchst unerwünscht.

Was ich möchte, ist der unterbrochene Job wird auch ausgelöst, nachdem das System wieder gesichert ist (im Wesentlichen das gleiche Verhalten ist der Auslöser Zeitplan Zeit war während der Systemausfallzeit und die Richtlinie war MISFIRE_INSTRUCTION_FIRE_NOW). Gibt es hier einen Workaround?

Antwort

2

, das zu tun, müssen Sie den Job mit der Option requestRecovey, in Java und Quartz 2.X konfigurieren:

JobDetail jd = newJob(job).withIdentity(name, group) // 
      .requestRecovery()// ask scheduler to re-execute this job 
      .build(); // if it was in progress when the scheduler went down... 
Verwandte Themen