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

Spring Java Discussion :

Commit après le dernier Step [Batch]


Sujet :

Spring Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2012
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 165
    Points : 59
    Points
    59
    Par défaut Commit après le dernier Step
    Bonjour,

    Je possède d'un job qui est constitué de plusieurs Steps.

    J'aimerai réaliser le commit après le dernier Step puisque mon objectif est de pouvoir faire un rollback au cours de l'exécution du job et pouvoir l'arrêter aussi.

    Je vois que la propriété commit-interval est obligatoire au niveau de chaque Task.

    Merci de vos renseignements.

  2. #2
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Points : 494
    Points
    494
    Par défaut
    Bonjour,
    J'ai du mal à cerner votre besoin exact, mais voici une ou deux pistes de réflexion.

    Tout d'abord, Spring Batch a été conçu dans un but bien précis : permettre, en Java, d'effectuer des traitements batch, soit des traitements sur des très grands jeux de données. De ce point de vue, les commits intermédiaires ne doivent pas être considérés comme une fonctionnalité, mais comme une nécessité. Si votre traitement entier doit, pour une raison ou pour une autre, être entièrement réalisé au sein d'une seule et unique transaction, alors Spring Batch n'est probablement pas le framework qu'il vous faut (et j'espère que le nombre d'éléments à traiter dans votre projet n'est pas de l'ordre du milliard, sinon votre administrateur DB va peu apprécier... )

    Si votre traitement peut par contre être coupé, l'important est de déterminer à quelle granularité le découpage doit être fait. Prenons un exemple simple : vous devez traiter une liste de paiements bancaires. Seule restriction : tous les paiements d'un compte doivent être enregistrés ensembles pour des raisons évidentes de cohérence des données. Dans ce cas, votre batch devrait, comme première étape, trier le fichier des paiements dans l'ordre des comptes (si nécessaire) ceci pour pouvoir les regrouper au sein d'un container plus global, le compte bancaire. La suite du traitement se passe ensuite par lots de comptes (avec un commit-interval qui n'a d'influence que sur la performance) et non plus par lots de paiements. L'unité transactionnelle au sein d'un compte est assurée, et si une erreur survient sur l'un ou l'autre des comptes, la majorité du traitement est commit.

    L'important est toujours de penser que Spring Batch effectue un traitement par lots (chunk-by-chunk). Si deux éléments sont liés ensembles, alors il y a une chance qu'ils puissent être présents dans deux chunks différents, avec le risque que l'un soit traité et pas l'autre. Le regroupement par compte dans mon exemple simpliste est l'assurance que chaque élément traité est indépendant de son prédécesseur et de son successeur.

    Je serais bien en mal de déterminer si j'ai répondu à votre question d'après les maigres informations que vous donnez. Si vous souhaitez des réponses plus précises et adaptées à votre besoin, merci de préciser un peu vos requirements.

    Edit : cette page de documentation de Spring Batch donne quelques informations à propos de la gestion des transactions et de l'arrêt du batch (voir point 11.2 et le concept de chunk-completion-policy). Je pense que c'est applicable sur un step unique et non, comme dans votre cas, sur plusieurs steps. Mais ça vous donnera peut être des idées.
    Always code as if the guy maintaining your application is a violent psychopath!
    Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch

  3. #3
    Membre du Club
    Inscrit en
    Mars 2012
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 165
    Points : 59
    Points
    59
    Par défaut
    J'ai pu résoudre cette problématique en mettant un Step de validation (spécifique) au début qui me permettra de faire des traitements de validation et de contrôle.

    J'aimerai bien que la communauté de Spring Batch prend en considération cette problématique de rollback.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul de la somme d'une colonne apres la derniere ligne non vide
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2009, 11h14
  2. php récupérer ce qu'il y a après le dernier shlass
    Par koKoTis dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2008, 17h39
  3. Extraire une chaine après le dernier separateur
    Par Eva01 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/05/2008, 20h38
  4. Réponses: 4
    Dernier message: 08/01/2007, 13h06
  5. [JTable] addRow() apres la derniere ligne
    Par Nico66 dans le forum Composants
    Réponses: 4
    Dernier message: 19/05/2005, 15h04

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