Camel SFTP按计划和按需提取

时间:2017-08-01 13:49:01

标签: apache-camel sftp

我可以在不同的变化中看到类似的问题但是没有找到明确的答案。

以下是用例:

  • 我想每小时轮询一次的SFTP服务器
  • 最重要的是,我希望公开一个用户可以点击的REST端点,强制从同一个SFTP进行临时检索。我很满意投票的时间表保持原样,即如果我进行了调查,20分钟后用户强制刷新,下一次投票可以在40分钟之后。

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

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

我正在考虑创建一条路由来启动/停止a​​d-hoc提取的单独路由,但我不确定这是否会允许维护路由之间的幂等行为。

所以,聪明的Camel在那里绞尽脑汁,满足这些要求的最优雅方式是什么?

1 个答案:

答案 0 :(得分:0)

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

希望,你已经完成了:

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

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

我会创建一个过滤器,为消费者和生产者创建单独的路径。

对于文件选项,我会使用:idempotent,delay,initialDelay,useFixedDelay = true,maxMessagesPerPoll = 1,eagerMaxMessagesPerPoll为true,readLock = idempotent,idempotent = true,idempotentKey = $ {file:onlyname},idempotentRepository,递归= FALSE - 用于消费。 不会再读取任何文件!您可以使用各种各样的选项,并尽可能地尝试最适合您的选项,例如延迟选项。如果你好

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

希望这有帮助!