文件夹中没有文件时,骆驼ftp2文件抛出错误

时间:2018-11-12 03:42:08

标签: exception apache-camel camel-ftp

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

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

现在,如果上述路由启动时没有文件,则一旦服务器消耗并处理该文件,它就什么也不会说。如果一段时间内没有文件,我想抛出一个异常。

2 个答案:

答案 0 :(得分:0)

您收到的异常是什么?

我检查了文档http://camel.apache.org/ftp2.html,这可能是由于未将选项设置为true引起的。 请使用ignoreFileNotFoundOrPermissionError=true再试一次,并检查文档中是否存在其他可能适用的选项。

答案 1 :(得分:0)

当目标服务器上没有文件时,一些可能的方式引发异常。

1。使用sendEmptyMessageWhenIdle选项(来自file

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

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

在原始路由中,添加一个新步骤以记录某个文件中的最后文件处理时间,然后使用一条新路由来定期检查最后更新时间与当前时间之间的差值是否在可接受的时间范围内。

缺点:其他问题(例如连续网络问题)可能会产生错误警报