Apache Camel如何用于监控文件更改?

Jan*_*anx 14 file apache-camel

我想监视给定目录中的所有文件以进行更改,即更新的时间戳.这个用例对于使用文件组件的Camel来说似乎很自然,但我似乎找不到配置此行为的方法.

一个uri喜欢:

file:/some/directory
Run Code Online (Sandbox Code Playgroud)

将使用提供的目录中的文件,但将删除它们.

一个uri喜欢:

file:/some/directory?noop=true
Run Code Online (Sandbox Code Playgroud)

在添加每个文件或路由启动时消耗每个文件一次.

令人惊讶的是,没有一个选项

consumeOnChange=true
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来监控文件更改而不是在使用后删除文件?

Cla*_*sen 18

您可以通过设置idempotentKey来告诉Camel如何将文件视为已更改.例如,如果文件大小更改,或其时间戳更改等.

有关详细信息,请参阅Camel文档文档:http://camel.apache.org/file2

请参阅避免多次读取同一文件(幂等消费者)一节.并阅读有关幂等和幂等关键的内容.

所以类似的东西

from("file:/somedir?noop=true&idempotentKey=${file:name}-${file:size}")
Run Code Online (Sandbox Code Playgroud)

要么

from("file:/somedir?noop=true&idempotentKey=${file:name}-${file:modified}")
Run Code Online (Sandbox Code Playgroud)

您可以在这里阅读有关您可以使用的各种$ {file:xxx}令牌:http://camel.apache.org/file-language.html