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 :

Spring batch : gérer le cas ou le batch n'a pas tourné depuis quelques jours


Sujet :

Spring Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 17
    Points
    17
    Par défaut Spring batch : gérer le cas ou le batch n'a pas tourné depuis quelques jours
    Bonjour à tous,

    Je suis débutant spring batch, et j'essaye depuis quelques jours de faire un batch, qui lit un fichier csv et qui alimente une base de donnée. Seulement les fichiers csv dont je dispose ont des noms de la forme dateAjd.csv, je doit donc lire un fichier par jour.
    J'ai donc utilisé FlateFileItemReader pour la lecture, et lui donné la ressource obtenu aprés une concaténation de la date d'aujourd'hui et ".log".

    Mais le gros problème, c'est que je doit aussi géré le cas ou le batch n'a pas tourné pendant quelques jours, et je vous avoue que je bloque complètement.
    désesperé, j'ai pensé à supprimer les fichier aprés la lecture, mais j'ai accés à ces fichiers uniquement en lecture

    Merci de votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    La première problématique est de savoir depuis quand le batch n'a pas tourné, il faut que tu te base sur l'information dans les données de fonctionnement du batch pour connaitre cette date.

    Une fois que tu a cette date tu peu créer une liste de noms de fichiers (un par jour) et créer un InputStream (surement des FileInputStream dans ton cas) pour chacun de ces fichiers. Tu peu ensuite passer ces InputStream dans un SequenceInputStream que tu passera dans un InputStreamResource que tu pourra alors passer à ton FlateFileItemReader (via setResource).

    Je ne suis vraiment pas très au point en Sping Batch, j’espère cependant que ma réponse ne tombe pas trop à coté.

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Bonjour,
    parfois il est necessaire soit:
    - de creer une Table dans la base de données qui te permettra de gerer cela (par exemple: Batch_Event_LOG(EVENT_Times, EVENT..., EVENT_INfo, ect...)
    - ou tu sauvegardes l´etat dans un fichier, cela te permettra de savoir ou est ce que tu pourras commencé ta lecture
    - ou ajouter une colonne dans la table qui est un flag, et te permet de savoir ce qui a ete inserer la derniere fois.

    c´est a toi alors de manipuler comme tu voudras.

    Eric

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Je vous remercie de vos réponses, ca m'a parmis d'avancer dans mon batch.

    Vu que je ne dispose pas de base de donnée, je stock la date dans un fichier. Au lancement du batch, la methode init est éxecutée pour construire le chemin du fichier à traiter, ou dans le cas de plusieurs fichier concaténer les fichier en utilisant SequenceInputStream.

    Mais un autre problème se pose, quand on a plusieurs fichiers à traiter, si au dernier fichier le batch plante, quand on va le relancer, il va traiter encore les 5fichiers.
    Je ne peux pas utiliser le stockage dans une base de donnée pour savoir ou reprendre le batch.

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/10/2011, 13h17
  2. livre c++ pour mieux gérer mon cas
    Par skerdreux dans le forum Contribuez
    Réponses: 1
    Dernier message: 28/06/2008, 01h49
  3. livre c++ pour mieux gérer mon cas
    Par skerdreux dans le forum C++
    Réponses: 1
    Dernier message: 28/06/2008, 01h49
  4. Analyse LL(1) : Gérer certains cas et table d'analyse
    Par minirop dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 21/10/2007, 10h29

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