我想开发一个轮询包含CSV文件的目录的路由,以及使用Bindy解组每个文件并将其排列在activemq队列中的每个文件。在Apache Camel中处理大型CSV文件的最佳策略
问题是文件可能非常大(一百万行),所以我宁愿一次排队一行,但我得到的是在一个java.util.ArrayList结尾的所有行Bindy导致内存问题。
到目前为止,我有一个测试和解组正在工作,所以使用注释的Bindy配置是好的。
这里是路线:
from("file://data/inbox?noop=true&maxMessagesPerPoll=1&delay=5000")
.unmarshal()
.bindy(BindyType.Csv, "com.ess.myapp.core")
.to("jms:rawTraffic");
环境是:Eclipse的靛蓝,Maven的3.0.3,2.8.0骆驼
谢谢
感谢克劳斯您回答。现在我面临着一个不同的问题。继续我的小练习,我试图从队列中提取并用'.convertBodyTo(String.class).to(“file:data/outbox?fileExist = Append”)写入文件,但只有第一行获取书面。所有相同的,如果我使用文件选项覆盖,我只得到最后一行。有没有办法将CSV文件中的所有行写入文件?谢谢 – Taka
你需要指定一个文件名.to(“file:data/outbox?fileName = data.csv&fileExist = Append”) –
在'.streaming()后面加'.thread()'可以更有效率? – Pith