当文件夹中没有文件时,camel ftp2 文件抛出错误

camel ftp2 file throw error when there is no file present in the folder

我正在努力从 sftp 路径读取文件并每 5 小时处理一次保存在服务器上的纯文本文件。有一个要求,当生产者在服务器 上没有文件present/kept 时,我需要 抛出异常。我正在使用以下内容读取文件

from(sftp://NUID@SERVER:PORT?&preferredAuthentications=password&delete=true)
            .routeId(ROUTE_ID)
            .log("${body}")
            .process(processor)
            .end();

现在,如果在上述路由启动时没有文件存在,一旦服务器上有文件,它就不会说任何内容,它会使用并处理它。如果一段时间内没有文件,我想抛出异常。

您收到的异常是什么?

我查了文档http://camel.apache.org/ftp2.html,可能是某个选项没有设置为true导致的。 请使用 ignoreFileNotFoundOrPermissionError=true 再试一次,并查看文档以了解其他可能适用的选项。

当目标服务器上没有文件时抛出异常的一些可能方法。

1.使用 sendEmptyMessageWhenIdle 选项(来自file

将此选项设置为 true 将使您的路由在轮询消费者扫描目标服务器上不存在任何文件时接收空消息的交换。然后,您可以在路由中添加一个新步骤,以在遇到空消息(但不是正常交换)时抛出异常。

2。使用 timer 组件设置另一个路径以检查上次文件处理时间

在你原来的路由中,添加一个新的步骤来记录某处最后一次文件处理时间,然后有一个新的路由来定期检查最后一次更新时间和当前时间之间的差异是否在可接受的时间范围内。

缺点:其他问题(例如持续网络问题)可能会导致误报