Camel Spring DSL一旦处理了目录中的所有文件,就在bean上调用一个方法

时间:2013-12-11 08:47:42

标签: java spring apache-camel spring-dsl

我正在尝试在Camel Spring DSL(版本2.12.1)中实现以下功能。

  • 从目录中读取所有文件
  • 使用indexer bean
  • 处理每个文件
  • 在处理完所有文件后,在索引器bean上调用finalizeRepository方法

(基于Claus提供的答案,我已经使用工作解决方案更新了下面的代码示例。)

<route>
    <from uri="file:./dataToIndex" />
    <bean ref="indexer" method="addDocument(${body}, ${headers.CamelFileNameOnly})" />
    <when>
        <simple>${headers.CamelBatchComplete} == true</simple>
    <bean ref="indexer" method="finalizeRepository" />
    </when>
</route>

如果标头CamelBatchComplete包含值true,则将调用finalizeRepository bean上的方法indexer。一旦处理了true目录中的所有文档,标题就会设置为dataToIndex

我唯一不确定的是batch的定义。 是batch是根据单个轮询事件中发现的内容确定的(例如,如果在目录中找到1k文件则构成批处理),或轮询事件的模式(即一系列成功的民意调查项目)之后没有任何项目的投票被视为batch)。

1 个答案:

答案 0 :(得分:2)

文件组件在处理批处理中的最后一个文件时添加标头。您可以使用它来知道它的最后时间并调用bean。

这是由支持“批处理”的其他组件完成的,您可以在此处找到详细信息