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

Plateformes réactives et architectures modulaires Java Discussion :

[Apache Camel] Lecture de Fichiers


Sujet :

Plateformes réactives et architectures modulaires Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [Apache Camel] Lecture de Fichiers
    Bonjour,

    Je voudrais savoir comment faire la lecture de chaque fichier de mon arborescence sur D:\ En Apache Camel . Pour parcourir cet arbre , j'utilise :

    from("file://D:/Fichier_Technique?recursive=true")

    Ce que je voudrais c'est pouvoir accéder à chaque fichier de ce répertoire, l'ouvrir et stocker son contenu dans une BDD mysql .

    Je voudrais également savoir , quelle est la fonction qui permet d'obtenir le nom d'un fichier ?

    Si quelqu'un a une idée de comment je peux faire cela ?

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    bonjour
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    from("file://D:/Fichier_Technique?recursive=true")
    c'est la bonne technique. recursive va rechercher tous les fichiers dans tous les sous dossier
    j'ajouterais un preMove et move pour éviter de mélanger les fichiers

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    from("file://D:/Fichier_Technique?recursive=true&premove=../inprogresss&move=../complete")
    ainsi chaque fichier en cour de traitement sera placé dans inprogress et une fois le traitement fini déplacé dans complete.


    à chaque activation tu va recevoir un fichier dans les entêtes du message tu vas avoir CamelFileName et quelques autres entêtes il te donne le chemin du fichier que tu a récupéré voir "File consumer only" dans la doc camel file2

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from("file://D:/Fichier_Technique?recursive=true&premove=../inprogresss&move=../complete")
    .log("$CamelFileName")
    .to("log:content")

    attention si tu envisage de passer à ftp pour récupérer le contenu du fichier il faut faire un convertTo(String.class)
    A+JYT

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour tes réponses .

    Enfait pour mieux t'expliquer mon problème. Dans ma BDD , j'ai stocké une expression régulière . Ce qu'il faudrait c'est que quand je parcours mon arborescence, il faut que je puisse accéder à chaque nom de fichiers pour pouvoir le tester avec la Regex . Et je ne sais pas comment ca se fait avec Apache Camel ? Une fois que le nom du fichier est validé , il faut que je puisse le lire : c'est a dire : ouvrir le fichier et stocker son contenu en BDD . Et je voudrais savoir comment ca se fait en ligne de code ?

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    camel n'est pas fait pour ça

    camel fonctionne sur un mode événementiel
    lorsqu'un fichier est ajouté dans un dossier camel le capte et le transmet dans le process

    A+JYT

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je te remercie pour toutes tes réponses

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    dans camel tu as pour chaque route la possibilité de définir des processor des bean qui te permettent de manipuler le message
    un bean est le plus simple à mettre en oeuvre

    tu définie une classe avec une méthode
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class myBean {
       public void aMethod(Exchange exchange) {
          Message msg = exchange.getIn();
          String fileName = msg.getHeader("CamelFileName");
     
     
          ....
       } 
    }

    dans ta route tu fais simplement
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    from(url).bean(myBean.class);
    pour chaque message capté par le from ta méthode aMethod sera appellée.

    tu peux récupérer tous les headers avec msg.getHeaders() tu peux ajouter tous les headers que tu veux
    tu peux récupérer le contenu du message avec msg.getBody()
    enfin tu peux modifier le body si tu en as besoin.

    A+JYT

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Re : Apache Camel
    Bonjour,

    Quelqu'un sait il comment on fait pour ajouter des enregistrements dans une BDD mySql à partir de Camel ?

    Quelles sont les dépendances que l'on devrait rajouter ? Comment ajouter le nom de la base de données dans Camel ? COmment créer la requete sql ( insert) , etc .


    Je vous remercie infiniment ^^

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    lis la doc camel jdbc et camel jpa

    A+JYT

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Re : Apache Camel
    Bonjour Sekaijin,

    Est ce qu'il y a une fonction dans Camel qui permet de lire un fichier dans un répertoire une et une seule fois. Quand j'exécute mon code , Je remarque que que les fichiers au sein d'un même répertoire sont lues plusieurs fois ?

    from("file://D:/Project/Repertory?recursive=true&noop=true&idempotent=true")

    En principe la fonction idempotent évite de lire le même fichier plus d'une fois , mais dans mon cas ca ne marche pas ! Un même fichier peut être lu plusieurs fois .

    MErci encore une fois

  10. #10
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    noop=false

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2009, 14h26
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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