Que pensez-vous de l'utilisation de Java EE pour les traitements batchs ?
Quelqu'un a-t-il un retour, positif ou négatif, d'une boite ayant fait cette expérience ?
Sinon, qu'utilisez-vous pour vos batchs ?
Que pensez-vous de l'utilisation de Java EE pour les traitements batchs ?
Quelqu'un a-t-il un retour, positif ou négatif, d'une boite ayant fait cette expérience ?
Sinon, qu'utilisez-vous pour vos batchs ?
bonsoir,
qu'entends-tu exactement par batch?
quel est le traitement que tu veux effectuer?
Par batch, je suppose que tu veux parler d'un traitement qui s'effectue régulièrement (tous les jours à minuit par exemple)
Si tu veux utiliser java pour effectuer le traitement, pourquoi pas... tout dépend du type de traitement batch. Par contre, si il s'agit d'utiliser java pour planifier les traitements, je suis moins convaincu. C'est possible en utilisant l'API Quartz par exemple, mais cela nécessite d'avoir ton programme java qui tourne en permanence.
C'est pourquoi j'utiliserais plutôt des outils proches du système pour la planification: tâches planifiées sous Windows, tâches CRON sous Linux...
Je veux dire par là traitement de masse, qui s'oppose à un système transactionnel ou interactif.
Typiquement, un batch est un traitement que l'on lance le soir pour avoir le résultat le lendemain matin. Par essence, c'est un traitement long (sinon, autant faire un système interactif, comme une page web comprenant un script), qui gère des quantités colossales de données.
Ex : synchronisation entre deux bases, calcul des intérêts des comptes rémunérés d'une banque, passage des francs en euro des comptes, calcul de statistiques ou extractions particulières...
Un des principes est que si un problème est rencontré pour un bout du traitement, au lieu d'avoir un message box retry/cancel, on a un message d'alerte dans les logs, et le traitement n'est pas forcément arrêté pour autant.
C'est du back-office, invisible à l'utilisateur final.
Les batchs sont courants en entreprise mais pas très utiles pour les besoins personnels.
De nombreuses entreprises effectuent des traitements batchs en java sans que celà pose le moindre problème... A mon sens, il n'y a aucun problème à faire effectuer à un programme java des traitements de masse
Ensuite, si on veut vraiment une performance optimale, il va falloir réveiller le vieux débat "Java vs C++" du point de vue des performances: il y a déjà une littérature très (trop) abondante sur le sujet.
Il faut étudier le batch, ce n'est pas rien qu'il existe des analystes d'exploitation (j'en fait partie ).
Si les traitements ne sont pas trop importants en terme de charge machine, tu peux y aller et tout faire en java. Maintenant si les traitements batch risque de froler l'ensemble du temps hors TP, c'est pas très conseillé. En effet, avec java, lorsque tu lances un programme, cela se passe en deux temps : chargement de la JVM puis programme lui-même. Le fait de devoir charger la JVM à chaque programme peut te faire exploser les temps (je prend mon exemple où c'est environ 30 000 programmes lancés par nuit...).
J'aurais tendance à dire que tout dépend de la nature de tes batchs.
Personnellement, j'ai développé un moniteur de batch java, donc, la jvm est loadée une seule fois, les traitements se faisant par des threads.
Il est vrai qu'à l'époque, je n'avais pas entendu parler de Quartz (j'aurais au moins regardé comment il fonctionne avant de développer un spécifique)
Ceci dit, il n'y a rien de sorcier dans ce genre de développement.
En gros, tu as un thread qui boucle sur des définitions de travaux, et quand l'heure est arrivée, tu lances un thread pour exécuter la tâche.
J'utilise des classes étendant Thread pour le codage d'un type de tâche, du coup, l'appel est standard
Bref, il y a certainement mieux, mais pourquoi utiliser une usine à gaz quand on a des besoins limités...
A+
il y a même des projets solides en préparation autour de ce theme
spring-batch
et une explication blog spring-batch/
ca peut inspirer
Salut,
Je développe actuellement un site en J2EE. J'ai aussi quelques batchs à faire tourner. Pour cela j'utilise le Scheduler de JBoss. L'avantage : j'appelle mes EJBs Session et je bénéficie donc de tous leurs avantages. Inconvénient : c'est propre à JBoss.
C'était pour info.
il me semble qu'il y a des EJB timer dans la norme EJB
sinon, perso j'utilise quartz
Partager