Ich benutze das Quarz-Plugin mit Grails 1.3.7. Ich muss Load Balance / Cluster eine Server-App, die Quarz-Jobs verwendet. Scheinbar wird dies unterstützt, aber ich finde, dass alle Google-Suchergebnisse und Links innerhalb von Dokumenten gebrochen sind. Ich habe ein paar rohe Java-Beispiele gefunden, aber ich nehme an, dass Grails einen gruseligeren Weg hat, dies zu tun. Alles, was ich brauche, ist ein einfaches Beispiel für die Verwendung als Vorlage. Ich verstehe, dass ich Quarz irgendwie aktivieren muss, um JDBC zu verwenden, um die Jobs zu speichern und Sperren zu verwalten.
Ich denke, eine Verbindung zu einer einzelnen Probe würde es tun. Aber jedes Mal, wenn ich etwas gefunden habe, das vielversprechend aussieht, weist es auf einen gebrochenen Link auf der Terrakotta-Seite hin. So ziemlich jede Seite führt mich schließlich hierher: Ссылка , aber wenn ich auf Terracottas Website schaue, sehe ich Java-Zeug aber keine Grals. Wenn Java der einzige Weg ist, dies zu tun, dann sei es so, aber ich habe das Gefühl, dass es irgendwo da draußen ein bisschen Grails-Expertise geben muss!
TIA.
Um das Quartz-Plugin in Grails zu clustern, müssen Sie einige Dateien in Ihr Projekt aufnehmen. Installieren Sie zuerst grails-app/conf/QuartzConfig.groovy
und stellen Sie sicher, dass jdbcStore
aktiviert ist.
Installieren Sie als nächstes die Hibernate-Konfigurationsdateien, die für die Datenbank relevant sind, zu der Sie eine Verbindung herstellen möchten. Zum Beispiel ist bei Oracle die Basis-Hibernate-XML-Konfiguration bei grails-app/conf/hibernate/hibernate.cfg.xml
:
Die aktuelle Quartz-Hibernate SQL-Datei für dieses Beispiel heißt Quartz.oracle.hbm.xml
und befindet sich im selben Verzeichnis. Diese Dateien sollten im Quartz-Plugin auf GitHub ( Ссылка ) unter src/templates/sql
verfügbar sein. Beachten Sie, dass diese Skripts nur für die DataSource create
und create-drop
zu funktionieren scheinen. Daher müssen Sie die Quartz-Tabellen manuell in update
erstellen, wenn sie nicht bereits von einem vorherigen Lauf vorhanden sind.
Erstellen Sie eine grails-app/conf/quartz/quartz.properties
-Datei und passen Sie sie an Ihre Geschäftsanforderungen an:
Beachten Sie, dass Sie in den og Eigenschaften org.quartz.plugins
im Log4j-Setup von Config.groovy
setzen können, um relevante Jobs zu protokollieren und auslösende Informationen auszulösen. Ich denke info
level sollte ausreichen.
Bearbeiten oder erstellen Sie scripts/_Events.groovy
und fügen Sie die folgende War Modification Closure hinzu. Dies behebt einen bekannten Quartz-Plugin-Fehler, um das korrekte quartz.properties
anstelle eines leeren aus dem Plugin in die finale WAR-Datei zu installieren.
Und du solltest fertig sein ...
P.S. Wenn Sie eine Oracle-Datenbank verwenden, fügen Sie Folgendes zu BuildConfig.groovy
im Abhängigkeiten-Block hinzu, damit Sie Zugriff auf die Quartz-Oracle-Kommunikationstreiber haben:
P.P.S Die SQL-Dateien im obigen Link sind nur SQL. Um in eine Hibernate-Datei zu gelangen, umschließen Sie einfach jeden einzelnen SQL-Befehl mit einem Hibernate database-object
-Knoten, wie in diesem Beispiel (wieder mit Oracle-Beispiel):
Das dialect-scope
teilt Hibernate mit, mit welchen Datenbankdialekten die Knoten create und drop verwendet werden sollen. Sie können versuchen, es auszulassen und sehen, ob es funktioniert, andernfalls müssen Sie möglicherweise den MySql-Dialekt hinzufügen, der von Ihrer Grails-DataSource verwendet wird.
Die angenommene Antwort ist ein wenig veraltet. Siehe diese Frage für eine einfachere Lösung mit neueren Versionen von Grails: Verwenden von Grails-Datenquellen im Quartz-Plugin
Tags und Links grails quartz-scheduler cluster-computing