Bonjour,
Je fais actuellement une étude sur le choix d'un scheduler, Quartz s'est donc imposé très rapidement puisque très répandu.
J'ai réussi à lancer des tâches et à mettre en place le mode cluster pour haute disponibilité. Tout fonctionne à merveille pour une application.
Je décide alors de compliquer un peu les choses : je souhaite lancer deux applications avec leurs propres scheduler, trigger et job pour voir comment ce petit monde se comporte.
J'ai fait le test suivant :
- création de deux applications Java
- création de 2 jobs dans chaque appli : un avec un jobDataAsMap contenant un String, et un autre avec un jobDataAsMap avec un objet complexe
- création de 2 triggers dans chaque appli
- création d'un scheduler par appli
- je choisi de ne pas mettre en place le mode cluster et la haute dispo (donc pas d'enreg en base)
Je lance les deux appli, dans la console de la première je peux voir :
Et la console de la deuxième appli
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job3 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job3 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 1
Bref tout va bien, ça fonctionne super.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job3 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job3 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 2
Ensuite j'ai fait le test suivant :
- idem test précédent +
- création d'un datasource pour chaque appli
- mise en place du mode cluster et haute disponibilité
Je lance les deux applis, et là c'est le drame :
première console :
Et la console de la deuxième appli
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job3 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 2 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job3 sur Quartz 1 Le message du Scheduler de Quartz 1 : Job1 sur Quartz 2
OUUUUUUHHHlala ça se mélange les pinceaux grave.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job3 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 1 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job3 sur Quartz 2 Le message du Scheduler de Quartz 2 : Job1 sur Quartz 1
Trois questions :
- en regardant d'un peu plus prêt le paramétrage de quartz dans Spring, Job 1 manipule une entrée dans le jobDataAsMap de type String et Job3 un objet complexe sérialisé (développement perso) ==> BUG?
- est-il possible de partager une seule et même base pour n applications sans que Quartz ne se mélange les pinceaux avec les objets complexes??? (Si oui comment?)
- dans la base un JobData est associé à un seul JobDetail, il ne devrait donc pas y avoir de problème : quelqu'un à-t-il eu se problème et l'a-t-il résolu (si oui comment?).
Volontairement, je n'ai pas mis de code car très volumineux (si il le faut je le ferais à la demande).
Merci pour votre patience,
Cheachwood
Partager