骆驼文件拆分和聚合
Camel File Split and Aggregate
我正在处理一个 CSV 格式的大文件,我使用拆分来分解 CSV。这是示例文件格式:
**Item1,Item2,Item3,Item4
Item1,Item5,Item7,Item2**
这是我的路线信息:
<route>
<from uri="file://Data/groupedDocs?preMove=staging&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 个文件。最后,我还需要记录生成和出错的新文件数。有人可以帮忙吗?
如果出现异常,您可以在 header 中设置一些标志,并且您可以在 aggregationStrategy 中计算这些标志(第 Split aggregate request/reply sample
节)。 xml
中的属性 strategyRef
我正在处理一个 CSV 格式的大文件,我使用拆分来分解 CSV。这是示例文件格式:
**Item1,Item2,Item3,Item4
Item1,Item5,Item7,Item2**
这是我的路线信息:
<route>
<from uri="file://Data/groupedDocs?preMove=staging&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 个文件。最后,我还需要记录生成和出错的新文件数。有人可以帮忙吗?
如果出现异常,您可以在 header 中设置一些标志,并且您可以在 aggregationStrategy 中计算这些标志(第 Split aggregate request/reply sample
节)。 xml