IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[SCHEDULER] Quartz et Database


Sujet :

API standards et tierces Java

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut [SCHEDULER] Quartz et Database
    Bonjour,

    Je travaille sur une appli qui est deployee sur de nombreuses machines en production. Je dois utiliser Quartz afin de fournir une tache, qui parcoure la databse et envoie des emails a nos utilisateurs. Cette tache doit etre executee chaque soir. Le probleme est que si je deploie ce nouveau code sur chacune des machines, alors j'enverrai autant de mail que j'ai de machines en production.

    Est-ce que quelqu'un a deja eu affaire a ce genre de problemes?

    Merci beaucoup.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 75
    Par défaut
    J'imagine que tu es "obligé" de :
    - deployer sur plusieurs machine ton appli
    - que tu ne peux dissocier la partie quartz de ton appli dans une autre appli ?

    Donc il faut que centralise le faite que le traitement ai été effectué ==> ajout d'une table des "déjà fait" et integration de cette table dans ton traitement. Mais personnelement je trouve cela très dommage, il serait mieux de pouvoir changer un des 2 points de ma précédente hypothèse.

    Louis

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Oui malheureusement, je ne peux pas changer mes contraintes.
    Mais comment etre sur que mes differentes instances ne travaillent pas sur les memes donnees. La tache va etre planifiee pour etre executer a 24:00 tous les jours. Toutes les mahcines ayant rigoureusement la meme heure, j'ai peur que les travaux se chevauchent, et je ne sais pas comment mettre de verrou sur ma base.

  4. #4
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    L'ideal serait que l'execution de tes taches quartz ne soit fait que par une seul machine.

    Chacune de tes machine de prod ajouterais leur job. mais une seule lancerais l'exécution. As-tu une problématique de temps réelle? si oui Quartz n'est peut être pas adapter car si plusieurs job sont lancer simultanément et que tu n'a pas assez de thread simultanée une partie de tes jobs vont attendre qu'une thread se libère.

    Une autre solution pour possible pour ton problème de mail est de lancer un job supplémentaire à partir de minuit qui va vérifier régulièrement si toutes les jobs sont terminés si oui il en vois le mail et se reprogramme pour le lendemain sinon il se reprogramme pour dans 5 min par ex ou 1 heure çà dépend de la durée de tes jobs.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 75
    Par défaut
    Citation Envoyé par bourbaki2003
    Toutes les mahcines ayant rigoureusement la meme heure, j'ai peur que les travaux se chevauchent, et je ne sais pas comment mettre de verrou sur ma base.
    C'est meme certain ==> de mémoire avec oracle il existe une syntaxe :
    lock table ... mais si tu accede avec un select simple sur la table ayant le lock il est possible que cela ne marche pas (à vérifier)

    Mais cela reste très très m... comme solution. Le mieux de faire sauter le "verrou fonctionnelle"
    Tant que tu ne peux changer ton appli tu n'a pas de solution fiable.

  6. #6
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par bourbaki2003
    Oui malheureusement, je ne peux pas changer mes contraintes.
    Mais comment etre sur que mes differentes instances ne travaillent pas sur les memes donnees. La tache va etre planifiee pour etre executer a 24:00 tous les jours. Toutes les mahcines ayant rigoureusement la meme heure, j'ai peur que les travaux se chevauchent, et je ne sais pas comment mettre de verrou sur ma base.
    Une tache quartz n'es pas identifié par son heure mais par son nom et son groupe si sur chaque machine tu as un nom de tache différent c bon.

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Citation Envoyé par moritan
    Une tache quartz n'es pas identifié par son heure mais par son nom et son groupe si sur chaque machine tu as un nom de tache différent c bon.
    Oui mais le probleme c'est que bien qu'elles aient des noms differents, elles s'executeront en meme temps.

  8. #8
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    oups j'avais mal compris c'est de ton jeu de donnée que tu parlais et nom pas des job quartz.

    Si tu centralise l'exécution des job quartz, tu as la possibilité de réduire le nombre de jobs simultanée à 1 et comme ça les tâches ne s'enchaineront sans se perturber.

  9. #9
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Citation Envoyé par moritan
    oups j'avais mal compris c'est de ton jeu de donnée que tu parlais et nom pas des job quartz.

    Si tu centralise l'exécution des job quartz, tu as la possibilité de réduire le nombre de jobs simultanée à 1 et comme ça les tâches ne s'enchaineront sans se perturber.
    C'est bien la le probleme, je ne peux pas les centraliser.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 75
    Par défaut
    Citation Envoyé par moritan
    Si tu centralise l'exécution des job quartz, tu as la possibilité de réduire le nombre de jobs simultanée à 1 et comme ça les tâches ne s'enchaineront sans se perturber.
    J'ai cru comprendre qu'il ne pouvait malheureusement modifier cela

    Pas assez rapide à poster ma réponse

  11. #11
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par bourbaki2003
    C'est bien la le probleme, je ne peux pas les centraliser.
    Tu ne peux pas dire qu'une seule des machine effectuera l'ensemble du traitement?
    Si tu utilises la même base pour Quartz sur chacune des machines et ne démarre le moteur que sur une seule, ça devrait marcher.

    Car l'api te permet d'ajouter des taches sans avoir démarrer le moteur Quartz.

  12. #12
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Le probleme est que le build et le deploiement sont automatiques. Donc je ne peux pas specifier que telle ou telle partie de mon code doit etre deployee sur une instance particuliere.

  13. #13
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par bourbaki2003
    Le probleme est que le build et le deploiement sont automatiques. Donc je ne peux pas specifier que telle ou telle partie de mon code doit etre deployee sur une instance particuliere.
    Rien ne t'empêche de tout déployer sur chacune de tes instances.
    utilise ensuite un fichier properties pour dire si tu lances ou pas ton moteur quartz.
    Tu le coupe en valeur par défaut lors du déploiement et tu l'actives à la main sur un seul serveur.

    Après quartz peut tourner en mode cluster, peut-être qu'on peut gérer le nombre de thread globale, je ne sais faudrait regarder dans la doc.

    Néanmoins tu auras toujours des problème car tu veux qu'une applis distribuée marche en mode client serveur...

    Il serait quand même bien pour la suite de mettre en place un serveur pas forcément dédié mais unique pour quartz, ne serait-ce que pour avoir une archi applicative clean et maintenable.

  14. #14
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    C'est vrai que c'est une solution, meme si j'aimerais eviter au maximum les interventions manuelles.

  15. #15
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Citation Envoyé par bourbaki2003
    C'est vrai que c'est une solution, meme si j'aimerais eviter au maximum les interventions manuelles.
    Tu peux aussi mettre l'ip de la machine que lancera le moteur dans le properties.

    Au lancement de l'appli tu compare l'ip du properties et l'ip e la machine si différent tu ne lances pas le moteur si = tu le lances.

    Comme ça pas de manip après le déploiement.

    Mais ça reste une solution moins bien que de faire 2 applis une qui ajoute les taches sur toutes les machine et une qui les traite sur une seule.

  16. #16
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Je viens de parler avec les mecs qui s'occupent du deploiment de l'appli en prod. Apparemment, ils peuvent manuellement deployer un artifact sur une machine particuliere.

    Je pense donc creer soit un nouveau WAR ou EAR, qui fera parti du build mais pas du deploiment. Il sera deploye automatiquement par les mecs en charge des releases.

    Donc lors du deploiment, Quartz sera automatiquement instancie, et les jobs ajoutes au scheduler.

    Qu'en pensez vous?

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 75
    Par défaut
    Citation Envoyé par bourbaki2003
    Apparemment, ils peuvent manuellement deployer un artifact sur une machine particuliere.
    Je ne comprends pas ce que tu veux dire.

    Louis

  18. #18
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Qu'est ce que tu ne comprends pas exactement?

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 75
    Par défaut
    Qu'appels tu exactement un artifact ? (http://fr.wikipedia.org/wiki/Artefact)

    Et qu'est ce qui est au final deployer sur tes serveurs ?

    Louis

  20. #20
    Membre éprouvé
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Un artifact est un object issu du build (jar, war, ear...).
    Au final, on deploie un ear (ejbs, wars, jars) pour la partie back end et un war pour le cote front-end.

Discussions similaires

  1. Utilisation du scheduler Quartz
    Par A.BenAmmar dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 06/11/2012, 20h25
  2. QUARTZ SCHEDULER JOB
    Par ALTHON dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 22/02/2010, 22h54
  3. [QUARTZ] Reprogrammer un scheduler
    Par Apo007 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 04/11/2009, 16h59
  4. [Batch] scheduler quartz bean
    Par *alexandre* dans le forum Spring
    Réponses: 4
    Dernier message: 24/10/2006, 16h52
  5. Quartz: impossible d'instancier le scheduler!
    Par lOurs4816 dans le forum API standards et tierces
    Réponses: 28
    Dernier message: 20/04/2006, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo