我可以在不同的变化中看到类似的问题但是没有找到明确的答案。
以下是用例:
这两者都应该是幂等的,因为使用轮询机制下载的文件不应该在ad-hoc pull中再次下载,反之亦然。两种访问方式都应该下载所有尚未下载的可用文件(可能会有多个新文件 - 我在这里看到了一个类似的问题,用于按需提取,但它只用于单个文件)。
我想通过pollEnrich来避免锤击SFTP - 我的理解是每个pollEnrich都会从SFTP请求一个新的文件列表,因此在循环中执行pollEnrich直到检索到所有文件将多次调用SFTP。 / p>
我正在考虑创建一条路由来启动/停止ad-hoc提取的单独路由,但我不确定这是否会允许维护路由之间的幂等行为。
所以,聪明的Camel在那里绞尽脑汁,满足这些要求的最优雅方式是什么?
答案 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。
希望这有帮助!