我正在尝试使用Camel开发文件接收过程。我想做的事似乎很简单:
我尝试了几种不同的方法,但似乎没有一种方法可以完全按照我的意愿运作。我的主要问题是,由于文件在路由完成之前未被移动/重命名,因此我无法向任何下游进程发出信号,表明该文件在该路由中可用。
我需要调用webservices来确定新的名称和位置,一旦我这样做,主体就会被更改,我无法使用文件生成器从路径中移动文件。
我真的很感激听到任何其他解决方案。
答案 0 :(得分:1)
您可以发信号通知处理路由,然后使用文件组件的doneFile功能进行轮询。
您的第一个进程将复制文件,发出处理路径信号,完成复制文件后,它将写入一个完成文件。写完文件后,处理路径中的文件使用者将获取您要处理的文件。这可以保证在处理文件之前写入文件。
查看文件组件的“使用完成文件”部分。
答案 1 :(得分:0)
使用其他组件,您可以使用OnCompletion DSL语法触发路由后消息以进行进一步处理。
然而,对于文件组件,这实际上并不可行,因为移动/完成的事情与“OnCompletion”触发器并行发生,并且您无法确定该文件是否已完成。
你可能会对Unit of Work API有一些好运,它可以注册路由后执行逻辑(这就是当路由完成时File组件触发移动的方式)。
但是,你真的需要这个逻辑吗? 我看到你可能想要向一些文件使用者发送一个唤醒调用,但该文件真的必须准备好非常毫秒吗?一旦收到触发消息,你不能只是开始轮询文件并抓住它一旦准备好吗?通常情况下,你是如何使用基于文件的协议进行操作的(或者只是忽略触发器和轮询一次)。