Chciałbym opracować trasę, która sonduje katalog zawierający pliki CSV, a dla każdego pliku usuwa wszystkie wiersze za pomocą Bindy i umieszcza je w activemq.Najlepsza strategia przetwarzania dużych plików CSV w Apache Camel
Problem polega na tym, że pliki mogą być dość duże (miliony wierszy), więc wolałbym kolejkować jeden wiersz naraz, ale otrzymuję wszystkie wiersze w java.util.ArrayList na końcu Bindy, która powoduje problemy z pamięcią.
Do tej pory mam mały test, który działa bez zakłóceń, więc konfiguracja Bindy przy użyciu adnotacji jest w porządku.
Oto trasa:
from("file://data/inbox?noop=true&maxMessagesPerPoll=1&delay=5000")
.unmarshal()
.bindy(BindyType.Csv, "com.ess.myapp.core")
.to("jms:rawTraffic");
Środowisko jest: Eclipse Indigo, Maven 3.0.3, 2.8.0 Camel
Dziękuję
Dzięki Mikołaj za swoje odpowiedź. Teraz mam inny problem. Podążając za moim małym ćwiczeniem, próbuję wyodrębnić z kolejki i napisać do pliku z '.convertBodyTo (String.class) .to (" file: data/outbox? FileExist = Append ")' ale tylko pierwszy wiersz dostaje pisemny. Mimo wszystko, jeśli użyję opcji pliku Zastąp, otrzymam tylko ostatni wiersz. Czy istnieje sposób na zapisanie wszystkich wierszy z pliku CSV do pliku ?. Dziękujemy – Taka
Musisz podać nazwę pliku, .to ("file: data/outbox? FileName = data.csv i fileExist = Append") –
Dodaj '.thread()' po '.streaming()' może być bardziej wydajne ? – Pith