Manière correcte de persister à Quartz déclencheurs de base de données
Je suis assez nouveau à Quartz et maintenant, j'ai besoin de programmer certains emplois dans le Printemps de l'application web.
Je sais à propos de Printemps + intégration Quartz (je suis en utilisant le Printemps v 3.1.1) mais je me demandais si c'est la bonne voie à suivre.
En particulier j'ai besoin de persister mes tâches planifiées dans un DB de sorte que je peux ré-initialiser lors de l'application est redémarrée.
Sont là certains services publics fournis par les Printemps de la planification wrapper pour ce faire?
Pouvez-vous me suggérer quelques "bien connue" de la démarche à suivre?
Application Web?
Oui, mon projet est une application web
Je pense que vous lisez propriétés pour vérifier si la tâche est configurée pour être invoquée au démarrage ou pas. de sorte que vous contexte est chargé lors du redémarrage de votre serveur, lisez cette propriété et basé sur démarrer vos travaux
Oui, mon projet est une application web
Je pense que vous lisez propriétés pour vérifier si la tâche est configurée pour être invoquée au démarrage ou pas. de sorte que vous contexte est chargé lors du redémarrage de votre serveur, lisez cette propriété et basé sur démarrer vos travaux
OriginalL'auteur davioooh | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
Ici est ma façon de gérer ce scénario.
La première place dans ma Configuration Spring-je spécifier un
SchedulerFactoryBean
à partir de laquelle je peux injecter leScheduler
dans d'autres haricots.Puis, quand je créer un emploi dans mon application je de stocker les détails de la tâche dans la base de données. Ce service est appelé par l'un de mes contrôleurs et les horaires de la poste:
La
JobContext
je construis contient des détails sur le travail et est finalement passée à un utilitaire pour les travaux de planification. Ici, c'est que le code de la méthode utilitaire qui fait les horaires de travail. Remarquez que dans mon service, j'ai autowire laJobScheduler
et le passer à laJobContext
. Notez également que je stocke l'emploi dans la base de données à l'aide de mon référentiel.Donc, après tout ce code s'exécute j'ai deux choses se sont produites, mon travail est de les stocker dans la base de données et de son été programmée en utilisant le planificateur quartz. Maintenant, si le redémarrage de l'application, je veux reprogrammer mes tâches avec le planificateur. Pour ce faire, je m'inscrire à un haricot qui implémente
ApplicationListener<ContextRefreshedEvent>
qui est appelé le Printemps à chaque fois que le conteneur redémarre ou est commencé.JobInitializer.class
Cette classe autowires le planificateur et un référentiel qui saisit les instances de chacune de mes travaux qui mettent en œuvre les
ApplicationJob
interface. À l'aide de l'information provenant de ces enregistrements de base de données que je peux utiliser mon utilitaire pour reconstruire mon emploi.Donc, fondamentalement, je sauvegarder manuellement les travaux dans ma base de données et de planifier manuellement par l'injection d'une instance de la
Scheduler
échéant, des haricots. Pour reportée, j'ai une requête de ma base de données, puis de les programmer à l'aide de laApplicationListener
compte redémarre et du conteneur.Désolé ça a pris du temps à répondre, j'ai été très occupée, mais j'ai vu votre question il ya quelque temps et à nouveau j'ai eu le même défi. Si vous avez besoin d'aide mon email est sur mon blog qui est dans mon profil.
Merci beaucoup 🙂
OriginalL'auteur Kevin Bowersox
Je suppose qu'il y a assez peu de documentation disponible pour le Printemps de Quartz et de JDBC travail magasin d'intégration; par exemple:
OriginalL'auteur nobeh