Dieser Artikel stellt Springboot + Quartz vor, um geplante Aufgaben dauerhaft umzusetzen. Die Details sind wie folgt:
Es ist ziemlich lang, aber wer Geduld hat, kann es Immer Nachdem ich die endgültige Antwort erhalten habe, verwende ich Quarz zum ersten Mal für eine geplante Aufgabe. Ich entschuldige mich für etwaige Mängel.
Zuallererst
Es ist relativ einfach, geplante Aufgaben im Springboot-Projekt zu erledigen. Der einfachste Weg, es zu implementieren, ist die Verwendung von **@Scheduled-Annotation. Verwenden Sie dann @EnableScheduling** für die Anwendungsstartklasse, um geplante Aufgaben zu aktivieren.
Beispiel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
######Ergebnis
Geplante Aufgabe ausführen
Geplante Aufgabe ausführen
Geplante Aufgabe ausführen
Geplant ausführen Aufgabe Aufgabe
Eine geplante Aufgabe ausführen
Eine geplante Aufgabe ausführen
Eine geplante Aufgabe ausführen
Eine geplante Aufgabe ausführen
Einfache geplante Aufgaben können auf diese Weise erledigt werden, cron Ausdruck Das Ergebnis ist das Intervall zwischen Aufgabenausführungen.
Allerdings
In der tatsächlichen Entwicklung haben wir möglicherweise viele Aufgaben und müssen einzelne/alle Aufgaben manuell ausführen, z. B. Hinzufügen, Öffnen , Stopp, Fortfahren und andere Vorgänge. Dann erscheint Quarz zusammen mit der Hintergrundmusik von „Qianniu Class B…“.
Quarz
Integrieren Sie die drei Elemente von
1 2 3 4 |
|
Quarz
wird verwendet, um Job-(Aufgaben-)Triggerbedingungen, Triggerzeit, Triggerintervall, Beendigungszeit usw. zu definieren.
Aufgabenjob
Spezifischer Aufgabeninhalt, der ausgeführt werden soll
Verwendung
Für die Verwendung von Quarz ist eine Konfigurationsdatei erforderlich. Die Datei quartz.properties befindet sich im Paket org.quartz des Pakets quartz.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Persistente Quarzaufgaben für die Datenbank erfordern einige offiziell definierte Datenbanken Tabelle, die SQL-Datei der Tabelle befindet sich im JAR-Paket von Quartz
Koordinaten org.quartz.impl.jdbcjobstore. Sie können sehen, dass darin viele SQL-Dateien enthalten sind, einschließlich verschiedener Datenbanken MySQL muss die SQL-Anweisung nicht manuell ausführen, wir werden sie später beim Starten des Projekts automatisch initialisieren.
Erstellen Sie unsere eigene Eigenschaftendatei
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Da wir nicht den Standardverbindungspool verwenden, erkunden wir ihn und besorgen uns den Quellcode! Unter diesem Paket: org.quartz.utils gibt es einen PoolingConnectionProvider, den Quellcode des Verbindungspoolanbieters
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Dann implementiert die HikariCpPoolingConnectionProvider-Klasse PoolingConnectionProvider. Wir können in StdSchedulerFactory unter org.quartz.impl nach c3p0 suchen, um
1 2 3 4 5 6 |
|
zu finden. Den Rest zu recherchieren ist nicht so schwierig oder langweilig wie gedacht (das gefällt mir nicht). Lesen Sie entweder den Quellcode) ), aber dieser Quellcode scheint ein kleines Erfolgserlebnis zu haben.
Gehen Sie zurück zum Themenkanal und konfigurieren Sie application.yml
1 2 3 4 5 6 7 8 9 10 |
|
initialize-schema: Always Initialisieren Sie bei jedem Start des Projekts immer die Datenbanktabelle und erstellen Sie automatisch den Schlüsselteil der Tabelle Der Prozess besteht darin, zuerst die Datenbanktabelle zu löschen und erneut zu erstellen. Wenn die Tabelle nicht vorhanden ist, wird eine Ausnahme ausgelöst, die sich jedoch nicht auf die nachfolgend generierte Tabelle auswirkt, da die Tabelle bereits vorhanden ist existiert, wird die Ausnahme nicht ausgelöst job-store-type: jdbc Es ist der Task-Persistenztyp
Wir müssen möglicherweise Spring-Objekte in den Job einfügen, er kann nicht eingefügt werden .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Quarz-Konfigurationsdatei erstellen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
Trigger-Komponente erstellen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Verwenden Sie einfach diese Komponente, um den Trigger zu erhalten.
Aufgabe erstellen
1 2 3 4 5 6 7 |
|
jobExecutionContext Hier können Sie die Aufgabengruppe, den Aufgabennamen, die Triggergruppe, den Triggernamen, die Jobdetails und andere Informationen abrufen. Diese Anmerkung soll ermöglichen, dass dieselbe Instanz (Jobdetail) nur in einem einzigen Thread ausgeführt wird. Es versteht sich, dass job eine Schnittstelle ist, jobdetail eine Implementierungsklasse ist und a eine der Implementierungsklassen ist. Es dauert 100 Sekunden, um eine bestimmte Operation auszuführen, und der von Ihnen angegebene Timer führt alle 50 Sekunden eine Operation aus Zur Hälfte der Ausführung muss ein weiterer Thread zur Ausführung gestartet werden. Die Verwendung von DisallowConcurrentExecution bedeutet, dass a den Thread nicht öffnen und dann den aktuellen Vorgang ausführen darf, wenn a den Vorgang nicht abgeschlossen hat. Ich weiß nicht, ob meine Beschreibung leicht verständlich ist!
Erstellen Sie nach Bedarf Ihre eigene Aufgabenliste. Ich verwende geplante Aufgaben, um Crawler (kleine Crawler) zu erstellen.
1 2 3 4 5 6 7 8 9 10 11 |
|
Wenn wir Aufgaben hinzufügen, kümmern wir uns nicht um Quarz, sondern fügen die Aufgaben einfach ein die Datenbank. Keine Panik, er wird später nützlich sein. Diese Tabelle muss hinzugefügt, gelöscht, geändert und überprüft werden. Wir werden die Aufgabenliste im System abfragen und eine einzelne oder alle Aufgaben auswählen, um mit der Ausführung zu beginnen
Führen Sie die Aufgabe aus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
Abschließend Ich habe es gemäß dem Inhalt dieses Tutorials eingefügt. Sobald der Code übergeben wurde, kann er normal ausgeführt werden.
Empfohlenes Tutorial: „PHP“
Das obige ist der detaillierte Inhalt vonspringboot+quartz implementiert geplante Aufgaben dauerhaft. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!