-
Développer un Batch
Bonjour à tous, je développe actuellement une application Web (J2EE) basé sur Tomcat, et j'utilise le framework Spring.
Mon application envoie régulièrement des mails lors de certaine action des utilisateurs.
Je dois ajouter une gestion d'envoi de mail quotidienne.
Je me pose la question de savoir si ca vaut le coup de développer un batch complet à exécuter à côté, sachant, que je vait multiplier les fichiers de configuration, les mises à jour, alors que je vais quasiment utiliser les mêmes codes.
Ca va faire crier les puristes, mais est-ce pour un simple traitement de mail (qui ne présente qu'un faible risque de plantage) et ne représente un traitement lourd. Est-ce qu'il ne serait pas tout simplement plus simple de l'intégrer à ma webapp, et qu'elle se déclenche depuis ma webapps.
Les mises à jour sur le serveur seront constitués simplement d'une webapps.
Cette solution me semble à mes yeux plus simple, et je pourrais plus facilement proposer à l'administrateur de lancer l'envoie des mail directement depuis une interface dans ma webapps.
Qu'en pensez-vous?
-
Citation:
Envoyé par
ttropardy
...
Qu'en pensez-vous?
Rien pour le moment, je ne suis pas sûr d'avoir compris la problématique ;)
Ta question serait : faut-il utiliser un moniteur batch externe à l'application web ou en embarquer un (ou autre chose...) ?
Je dirais que compte tenu de ce que tu énonces, tu as le choix entre :
- intégrer quartz
- faire une servlet à démarrage automatique que bouclera sur la période cible pour exécuter le traitement
Sachant que quartz est vraiment très simple à mettre en œuvre, il n'y a pas de raison (à priori) de s'en passer :mouarf:
-
Pour cette solution: Faire une servlet à démarrage automatique que bouclera sur la période cible pour exécuter le traitement
En fait, je veux savoir pourquoi certains développeurs (quand on cherche sur internet ou qu'on en discute avec eux) trouve cette solution mauvaises? Alors qu'elle me parait plus simple à mettre en place? (Que ce soit avec quartz ou avec les Timer)
-
En ce qui me concerne, je ne trouve pas ça mauvais... pour peu de tâches...
Les questions qu'on peu se poser seraient :
- est-ce que j'aurai besoin d'autres travaux batch dans mon application
- y a t-il des contraintes particulières dans la planification (démarrage à heures pleines, etc...)
- aurai-je besoin d'externaliser mes batch sur un autre serveur pour alléger la charge
- etc...
Bref, ça dépend...
-
Dans mon cas, en l'occurrence,
il ne s'agit que d'envoi de mail le matin à 8h.
Peu de gens se connecte à l'application à cette heure là.
Je pense que l'envoi de mail n'est pas trop lourd.
En revanche, si je reprend ta logique, je pense qu'il est effectivement préférable d'avoir un batch séparé pour des traitements lourds du type:
- Indexation de document
- Purge de donnée
-
Dans la mesure où tu utilises une servlet différente pour chacun de tes batchs, tu as d'office du multi-thread mais à mon avis, ce n'est pas très "propre".
Il serait préférable d'utiliser des classes étendant Thread pour définir un batch et utiliser une seule servlet à démarrage automatique pour lancer les threads.
Du coup, on est très proche de la logique Quartz... ;)
-
La solution Technique vers laquelle je me tourne,je vais effectivement faire un Servlet qui se lance au démarrage, et ensuite instancier un Timer et programmer des TimerTask.