+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Invité de passage
    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 : 0
    Points
    0

    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 Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 205
    Points : 6 912
    Points
    6 912

    Par défaut

    bonjour
    Code java :
    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 :
    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 :
    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
    Invité de passage
    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 : 0
    Points
    0

    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 Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 205
    Points : 6 912
    Points
    6 912

    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
    Invité de passage
    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 : 0
    Points
    0

    Par défaut

    Je te remercie pour toutes tes réponses

  6. #6
    Expert Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 205
    Points : 6 912
    Points
    6 912

    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 :
    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 :
    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
    Invité de passage
    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 : 0
    Points
    0

    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 Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 205
    Points : 6 912
    Points
    6 912

    Par défaut

    lis la doc camel jdbc et camel jpa

    A+JYT

  9. #9
    Invité de passage
    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 : 0
    Points
    0

    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 Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 205
    Points : 6 912
    Points
    6 912

    Par défaut

    noop=false

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •