Mi piacerebbe sviluppare un percorso che esegue il polling di una directory contenente file CSV e per ogni file unmarsena ogni riga utilizzando Bindy e lo accoda in activemq.La migliore strategia per l'elaborazione di file CSV di grandi dimensioni in Apache Camel
Il problema è che i file possono essere piuttosto grandi (un milione di righe) quindi preferirei mettere in coda una riga alla volta, ma quello che sto ottenendo sono tutte le righe in una java.util.ArrayList alla fine di Bindy che causa problemi di memoria.
Finora ho un piccolo test e unmarshalling funziona così la configurazione di Bindy usando le annotazioni è ok.
Ecco il percorso:
from("file://data/inbox?noop=true&maxMessagesPerPoll=1&delay=5000")
.unmarshal()
.bindy(BindyType.Csv, "com.ess.myapp.core")
.to("jms:rawTraffic");
Ambiente è: Eclipse Indigo, Maven 3.0.3, 2.8.0 Camel
Grazie
Grazie Natale per la vostra risposta. Ora sto affrontando un problema diverso. Seguendo il mio piccolo esercizio sto cercando di estrarre dalla coda e scrivere in un file con '.convertBodyTo (String.class) .to (" file: data/outbox? FileExist = Append ")' ma solo la prima riga viene scritto. Comunque, se uso l'opzione File Override, ottengo solo l'ultima riga. C'è un modo per avere tutte le righe dal file CSV scritte nel file ?. Grazie – Taka
È necessario specificare un nome file, .to ("file: data/outbox? FileName = data.csv & fileExist = Append") –
Aggiungi '.thread()' dopo '.streaming()' potrebbe essere più efficiente ? – Pith