2015-08-24 64 views
1

我正在处理一个具有CSV格式的大文件,我已经使用拆分来打破CSV。下面是示例文件格式:骆驼文件拆分和聚合

**Item1,Item2,Item3,Item4 
    Item1,Item5,Item7,Item2** 

这是我的路由信息​​:

<route> 
    <from uri="file://Data/groupedDocs?preMove=staging&amp;delete=false" /> 
    <split streaming="true" parallelProcessing="true"> 
    <tokenize token="\n" group="1" /> 
    <to uri="bean:groupProcessor" /> 
    </split> 
    <log message="File Sent!!!"/> 
</route> 

在上面的代码中,我的groupProcessor正在处理从CSV文件中的各个行。

问题是,如何知道是否所有记录都已处理?可能有10或100条记录。我看到了聚合器模式,但问题是我不想聚合,即我没有读取所有记录并将它们转储到文件中。我正在为CSV文件中的每一行创建一个新文件。 CSV文件中的某些行也可能会生成错误,因此对于出错的条目,我不会创建任何新文件。例如。在CSV文件中,我有10行,其中2个抛出一些异常,因此我必须将这2个记录为例外,并为其余条目生成8个文件。最后,我还需要保持生成和出错的新文件的数量。任何人都可以在这里帮忙吗?

+0

看到我的这个答案骆驼聚合策略http://stackoverflow.com/questions/26346772/camel-aggregation-strategy/26348903#26348903 – Namphibian

回答

0

如果出现异常,您可以在标头中设置一些标志,并且您可以在aggregationStrategySplit aggregate request/reply sample)中计数该标志。属性strategyRef in xml