2016-07-29 23 views
2

Ich habe einige Jobs durch drei Trigger auslösen (vier Jobs zu jedem Trigger) Ich möchte einen bestimmten Job zu schießen immer zuerst, Ruhe kann auf zufällige Reihenfolge ausgelöst werden. sollte ich verschiedene Trigger implementieren? Gibt es eine Möglichkeit, etwas mit Prioritäten zu tun? i Feuer sie bereits in einem ThreadQuartz Job Scheduler, wie man Aufträge auf genaue Reihenfolge

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool 
org.quartz.threadPool.threadCount = 1 

und

newTrigger().withSchedule(     
       CronScheduleBuilder.cronSchedule(exp)) 
       .withPriority(getPriorityForOperation(cronOperation)) 
       .build(); 

wo Priorität für den ersten Job als für den Rest ist anders, aber trotzdem läuft es in zufälliger Reihenfolge

Antwort

2

Manchmal, wenn Sie Viele Triggers (oder wenige Worker-Threads in Ihrem Quartz-Thread-Pool), Quartz hat möglicherweise nicht genügend Ressourcen, um alle Trigger auszulösen, die gleichzeitig ausgelöst werden sollen. In diesem Fall möchten Sie möglicherweise steuern, welche Ihrer Trigger bei den verfügbaren Quartz-Worker-Threads den ersten Crack erhalten. Zu diesem Zweck können Sie die Prioritätseigenschaft für einen Trigger festlegen. Wenn N Trigger gleichzeitig ausgelöst werden sollen, aber derzeit nur Z Worker Threads verfügbar sind, werden die ersten Z Trigger mit der höchsten Priorität zuerst ausgeführt. Wenn Sie einem Trigger keine Priorität zuweisen, wird die Standardpriorität von 5 verwendet. Jeder Ganzzahlwert ist für die Priorität positiv oder negativ zulässig.

+0

danke für deine Antwort. Diese Auslöser befinden sich zu unterschiedlichen Zeiten, dh um 1:01 Uhr, um 2:01 Uhr und um 3:01 Uhr. , so dass sie sich nicht in der gleichen Zeit kreuzen. nur Jobs Reihenfolge in jedem Trigger Angelegenheiten – koowalsky

+0

Also, Sie meinen, von diesen 3 in Beispiel, wollen Sie 3:01 müssen zuerst gefeuert werden unabhängig davon, was andere Zeitpläne sind? – Sirsendu

+0

nein nein, in jedem Trigger gibt es 4 Jobs. genannt "täglich, jährlich, vierteljährlich, monatlich". Ich möchte täglich immer zuerst rennen. – koowalsky

0

Ich missverstanden Prioritäten in Quarz. Es ist für Trigger, nicht für Jobs. abzufeuern Arbeitsplätze zu bestimmten Bestellung benötigen wir

JobChainingJobListener chain; 
chain.addJobChainLink(dailyJob.getKey(), jobDetail.getKey()); 

zu verwenden, wo jobDetail in meinem Beispiel ist Monats-, Quartals- und Jahr. danke für Ihre Hilfe.