Dossier Apache Camel (second volet) : transformation des données d'un fichier texte

Le framework d'intégration Java Open Source est outillé pour réaliserdes transformations de données. Voici comment les mettre en œuvre,et gérer la gestion de gros volumes de fichier.

 


ce tutoriel a été réalisé par jean-baptiste defard, directeur technique netapsys
Ce tutoriel a été réalisé par Jean-Baptiste Defard, directeur technique Netapsys © Netapsys

Une erreur d'appréciation fréquente concernant Apache Camel est de croire que son utilisation est réservée à des contextes client/serveur du style mise en œuvre de Web Service, ou d'une messagerie JMS... Il est vrai que c'est pour ce genre de besoins que bien souvent on l'utilise la première fois. A l'usage, on découvre rapidement qu'il permet de faire beaucoup d'autres choses sympathiques.

Combien de fois ai-je écrit un bout de code qui lit un fichier de données et transforme celles-ci pour utilisation dans une application ? En fait, je ne sais pas exactement, mais trop souvent, c'est certain, je l'avoue, c'est le genre de code que j'ai en de multiples exemplaires, quelque part, "juste quelques adaptations" (comprendre un bon copié/collé) et hop ! Voilà, c'est fait...


Pour commencer


Grâce au composant file et aux formats de données existants, l'utilisation de Camel fournit une solution plus concise. Par exemple, la lecture ligne par ligne d'un fichier texte et l'affichage du contenu dans les logs s'écrit avec la route:


 from("file:/tmp/csv?noop=true&fileName=test.csv")
.split(body().tokenize("\n"))
.log("ligne: $").end();


Autrement dit : lire le fichier /tmp/csv/test.csv, éclater son contenu en morceaux en cherchant les fins de lignes, écrire le tout sur la sortie de log et c'est fini. Bon d'accord, il n'y a pas vraiment de traitement des données, mais cela reste une bonne base.