2012-05-18 5 views
5

Ist es in Quartz-Scheduler möglich, Ausführungsbeschränkungen für Jobs zu definieren?Einschränkung von zwei Jobs, die nicht gleichzeitig in Quartz-Scheduler ausgeführt werden können

Tatsächlich habe ich zwei Klasse, die Schnittstelle Job: JobA und JobB implementiert.

JobA wird jede Minute geplant. JobB wird jede Stunde geplant.

Ich möchte nicht, dass JobA und JobB gleichzeitig ausgeführt werden.

Hinweis: JobA und JobB machen nicht die gleichen Dinge.

Vielen Dank für Ihre Antworten.

Antwort

4

Es gibt keine direkte Unterstützung dafür. Wenn es sich um den gleichen Job handelt, können Sie ihn als statusbehaftet definieren - solche Jobs können nicht gleichzeitig ausgeführt werden.

Andernfalls können Sie die Anzahl der Quarzer-Worker-Threads auf 1 begrenzen, außerdem können Sie Thread-Prioritäten definieren, um auszuwählen, welcher Job zuerst ausgeführt werden soll. Leider wird diese Lösung nicht skalieren, wenn mehr Jobs involviert sind.

Schließlich können Sie dies manuell implementieren, ohne Quarz einzubeziehen. Ich denke, Sie möchten nicht, dass auf eine Operation oder eine Ressource gleichzeitig zugegriffen wird. Ziehen Sie in Erwägung, diese Methode/Ressource zu sperren, sodass beide Jobs gleichzeitig ausgeführt werden, aber einer blockiert und auf den Abschluss des anderen wartet.

+0

OK. Danke für deine Antwort – Sly33

Verwandte Themen