Quartz.Net Jobspeicherabfrage

8

Ich erstelle im aktuellen Projekt einen Scheduler mit Quartz.NET. In meinem Fall werden alle Jobs, die erstellt werden müssen, in einer einzigen Tabelle gespeichert, und es gibt eine separate Benutzeroberfläche, auf der ich neue Jobs hinzufügen oder vorhandene Jobs bearbeiten kann. Meine Frage ist, wie kann ich alle Jobs in der Tabelle dem Quartz-Scheduler zuführen? Soll ich alle Jobs in der Tabelle abfragen und die JobDetails und Trigger-Objekte erstellen? Gibt es in diesem Fall einen besseren Weg?

In diesem Fall möchte ich einen RAMJobStore oder AdoJobStore verwenden?

    
Dnana 28.06.2011, 08:38
quelle

1 Antwort

17

Sie können AdoJobStore verwenden.
Quartz.net wird eine Reihe von Tabellen mit dem Präfix QRTZ_ (Sie können es ändern, wenn Sie möchten) in Ihrer Datenbank verwenden, um Jobs, Trigger und den Status dieser Objekte zu speichern.
Ich nehme an, Sie möchten eine Tabelle in Ihrer DB haben, in der Sie erweiterte Informationen über Ihre Zeitpläne behalten, richtig?
Sie werden nicht direkt auf die Quartz.net-Tabelle zugreifen, da Sie die von Quartz.net bereitgestellten APIs verwenden werden.

Der Prozess zum Erstellen eines Jobdetails und -auslösers ist einfach und in den Lernprogrammen sehr gut beschrieben.

Um Ihre App so zu konfigurieren, dass sie den AdoJobStore verwendet, müssen Sie einige Informationen in Ihrer app.config-Datei angeben. Hier ist ein Beispiel:

%Vor%

Es gibt einige Dinge, die Sie beachten sollten, wenn Sie Quartz.net in einer Webanwendung, einem Dienst oder einer winform-App hosten. Der beste Ansatz besteht darin, SchedulerFactory und Scheduler als Singleton zu erstellen. Weitere Informationen erhalten Sie hier .

AKTUALISIEREN :

Zunächst müssen Sie Quartz.net-Tabellen erstellen (siehe Schritt 1) ) und dann müssen Sie einige Indizes für die Optimierung erstellen (siehe unten auf der Seite ) ).

Da Sie Ihre Jobs mit der Web-App einreichen werden, Sie diese App jedoch nicht für die quartz.net-Ereignisse (Trigger) verwenden, müssen Sie den Scheduler nicht starten. Auf dieser Seite gibt es nur wenige Schritte:

Sie müssen den Thread-Pool-Typ in ZeroSizeThreadPool

ändern %Vor%

und Sie müssen Ihre StdSchedulerFactory und Scheduler Singleton definieren. Sie können während der Anwendung (asp.net) Bootstrap starten.

Sie werden den Scheduler nie starten (Ihr Windows-Dienst wird das verwenden).

Eine andere Sache, die Sie sich merken sollten, ist, dass Sie Ihren Job zwischen Ihrem Web und Ihrem Windows-Dienst teilen müssen Es wäre also besser, es in einer separaten Versammlung zu halten.

Sie haben erwähnt, dass Sie einige Informationen in einem Ihrer Tische speichern. Sie müssen weiterhin Ihre Jobs einreichen und einen Trigger auslösen, der in Quartz.net-Tabellen gespeichert wird.

    
LeftyX 28.06.2011, 09:42
quelle

Tags und Links