我一直在通过 Spring 使用 Camel 将文件从 FTP 拉到本地磁盘,然后处理它们。我希望在路由执行但找不到任何要提取的文件时收到警报。有没有办法用股票骆驼做到这一点?
如果不; 我想做的是以自定义“验证器”的形式实现一个中间人。然后我会从 camel-ftp 组件路由到自定义验证器,然后它可以进行一些检查,在需要时发送通知,并将文件路由到要写入文件系统的文件组件。
我尝试添加这个中间人,似乎如果没有找到 FTP 文件,它甚至不会通知中间人。
我一直在通过 Spring 使用 Camel 将文件从 FTP 拉到本地磁盘,然后处理它们。我希望在路由执行但找不到任何要提取的文件时收到警报。有没有办法用股票骆驼做到这一点?
如果不; 我想做的是以自定义“验证器”的形式实现一个中间人。然后我会从 camel-ftp 组件路由到自定义验证器,然后它可以进行一些检查,在需要时发送通知,并将文件路由到要写入文件系统的文件组件。
我尝试添加这个中间人,似乎如果没有找到 FTP 文件,它甚至不会通知中间人。
您可以使用该选项
sendEmptyMessageWhenIdle=true
如文档所述(因为 ftp 组件扩展了文件组件并继承了它的选项):
http://camel.apache.org/file2
使用 sendEmptyMessageWhenIdle 时,如果没有要轮询的 ftp 文件,则会发送一条空消息。
然后,您可以使用过滤器或基于内容的路由器来检测空文件,然后发送电子邮件。
您也可以考虑将延迟选项设置为更高的值,这样您就不会尝试如此频繁地轮询,因为默认情况下延迟为 500 毫秒。
delay=10s
例如改为每 10 秒轮询一次。