Meilleure stratégie pour traiter de gros fichiers CSV dans Apache Camel
J'aimerais développer un parcours qui interroge un répertoire contenant des fichiers CSV, et pour chaque fichier il unmarshals chaque ligne à l'aide Bindy et les files d'attente dans activemq.
Le problème est que les fichiers peuvent être assez grande (un million de lignes) donc je préfère le file d'attente d'une rangée à la fois, mais ce que je reçois est que toutes les lignes de java.util.Liste de tableaux à la fin de Bindy qui pose des problèmes de mémoire.
Pour l'instant j'ai un petit test et désordonnancement travaille donc Bindy de configuration à l'aide d'annotations est ok.
Voici le parcours:
from("file://data/inbox?noop=true&maxMessagesPerPoll=1&delay=5000")
.unmarshal()
.bindy(BindyType.Csv, "com.ess.myapp.core")
.to("jms:rawTraffic");
Environnement: Eclipse Indigo, Maven 3.0.3, à dos de Chameau 2.8.0
Merci
source d'informationauteur Taka | 2011-11-14
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez le Séparateur EIP ensuite, vous pouvez utiliser le mode lecture en continu qui signifie Chameau traitera le fichier ligne par ligne.
Pour l'enregistrement et pour les autres utilisateurs qui pourraient avoir cherché cette autant que moi, pendant ce temps il semble y avoir une méthode plus simple qui fonctionne aussi bien avec les useMaps:
En utilisant à la fois le Répartiteur et l'Agrégateur de Titi, serait la meilleure stratégie pour le traitement de gros fichiers CSV dans Apache Camel. Lire plus sur le sujet forme Message Composé De Processeur
Voici un exemple d'utilisation de Java DSL: