2017-08-01 111 views
0

我可以在不同的变化中看到类似的问题,但没有设法找到明确的答案。Camel SFTP按计划和按需提取

这里是用例:

    ,我想从每小时
  • 轮询最重要的是
  • SFTP服务器,我要揭露一个REST端点用户可以打到做强制的AD从同一SFTP进行临时检索。我很高兴投票时间保持不变,即如果我进行了投票,20分钟后用户队伍恢复,下一次民意调查可以在40分钟后进行。

这两个都应该是幂等的,因为使用轮询机制下载的文件不应该再次在临时拉下载,反之亦然。这两种访问方式都应该下载所有可用的尚未下载的文件(可能会有多个新文件 - 我在这里看到了类似的问题,用于按需提取,但它是针对单个文件的)。

我想避免通过pollEnrich敲击SFTP - 我的理解是,每个pollEnrich都会从SFTP请求一个新的文件列表,因此在循环中执行pollEnrich,直到检索到所有文件都将多次调用SFTP。

我正在考虑创建一个路由来启动/停止一个单独的路由进行临时提取,但我不确定这会允许保持路由之间的幂等行为。

因此,聪明的骆驼脑筋急转弯,满足这些要求的最优雅的方式是什么?

回答

0

不是一个聪明的骆驼大脑,但我会尝试根据我的理解。

希望,你已经经历了:

http://camel.apache.org/file2.html

http://camel.apache.org/ftp2.html

我就已经创建了一个过滤器,为消费者和生产者不同的途径。

而对于文件的选项,我会用:幂等,延迟,在initialDelay,useFixedDelay = TRUE,maxMessagesPerPoll = 1,eagerMaxMessagesPerPoll为真,readLock =幂,幂= TRUE,idempotentKey = $ {文件:onlyname},idempotentRepository ,递归= false - 用于消费。 没有文件将被再次读取!您可以使用各种选项作为记录,并尝试最适合您的选项,如延迟选项。如果哟

“我想避免通过pollEnrich敲击SFTP - 我的理解是每个pollEnrich都会从SFTP请求一个新的文件列表,因此在循环中执行pollEnrich,直到检索到所有文件为止将调用SFTP多次。” - >除非使用disconnect = true选项,否则连接将不会终止,您可以连续使用或生成文件,检查断开连接的ftp选项并断开断开连接。

希望这会有所帮助!