我正在尝试在Camel Spring DSL(版本2.12.1)中实现以下功能。
indexer
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
)。
答案 0 :(得分:2)
文件组件在处理批处理中的最后一个文件时添加标头。您可以使用它来知道它的最后时间并调用bean。
这是由支持“批处理”的其他组件完成的,您可以在此处找到详细信息