我正在尝试在 Camel Spring DSL(版本 2.12.1)中实现以下目标。
- 从目录中读取所有文件
- 用
indexer
bean处理每个文件 - 处理完所有文件后,调用
finalizeRepository
索引器 bean 上的方法
(根据克劳斯提供的答案,我已经用一个可行的解决方案更新了下面的代码示例。)
<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
包含该值,则将调用 bean上true
的方法。处理完目录中的所有文档后,将标头设置为。finalizeRepository
indexer
true
dataToIndex
我唯一不太确定的是 的定义batch
。是batch
根据在单个轮询事件期间发现的内容确定的(例如,如果在目录中找到 1k 个文件,则这构成批处理),还是轮询事件的模式(即,一系列成功的轮询项目,然后轮询没有任何项目都被视为 a batch
)。