我是駱駝的新手,缺乏類似的在線問題讓我相信我在做愚蠢的事情。我正在使用駱駝2.12.1組件,並從兩個本地目錄解析大型CSV文件,並通過SFTP下載它們。我發現,Camel streaming splitter在file2和ftp2之間的行爲不同
分(體()令牌化( 「\ n」)。)流()解組()CSV()
作品爲本地文件(Windows 7)。;我得到一個
名單<名單<字符串> >
在CSV文件中的每一行多次交換。但是當我使用sftp組件的相同路由語法(連接到linux服務器來下載文件)時,我得到了一個單行的交換,其內容類似於調用「ls」:
-rwxrwxrwx 1用戶名USERNAME 83400 12月16日14時11 fileName.csv
通過試驗和錯誤,我發現
分裂(主體())。流()。解組()。CSV()
與sftp組件將正確加載和解析文件,但它不會以流模式進行,它將整個文件加載到內存中,然後將其解組爲一首歌曲交換。
我從camel 2.10發現了一個類似的錯誤報告(https://issues.apache.org/jira/browse/CAMEL-6231),其中子句關閉爲無效,表明記者正在使用線程並行流方式不正確,但我沒有配置這些功能。
的SFTP使用節IM是:
sftp://192.168.1.1?fileName=fileName.csv&username=userName&password=secret!&idempotent=true&localWorkDirectory=tmp
的文件節是:
"file:test/data?noop=true&fileName=fileName.csv"
任何人有什麼即時通訊做錯了的想法?
我不知道如何正確解決這個問題。我們通過下載(ftp,http)所有文件資源到一個緩衝區目錄來解決這個問題,然後使用文件組件對內容進行流,分離和並行處理。然後,從文件路由開始,如果我們輪詢特定文件或將它推送給我們也無關緊要。 – Ralf
謝謝拉爾夫,很高興知道別人有類似的問題。它跨過了我的想法去走你採取的路線,但我想更好地理解爲什麼它發生的第一次。 – Sinsanator
也許另一個解釋下載和處理可能有益的原因是FTP組件是單線程的。如果您將下載和處理分離,那麼您可以在下載文件的同時開始處理。 – Ralf