我第一次在制作应用程序中使用Camel从一个远程的SFTP站点检索文件。我以为一切都解决了,但现在我只能尝试让端点基于cron表达式来激活,但没有同时运行两次轮询
使用Quartz2作为调度程序与FTP2组件一起使用看起来是一个完美的解决方案,只不过这将在另一个轮询正在进行时启动一个轮询(“有状态”选项在以这种方式使用时不可用),从而产生错误。
是否有一个选项,我错过了,将给予我相当于一个有状态的工作?我猜这是因为使用文件/FTP使用者的并发轮询在大多数情况下似乎并不理想!
下面是我的路由构建器的简化片段:
from("sftp://myhost?username=sftptest&password=password&antInclude=*.csv&scheduler=quartz2&scheduler.cron=0/2+*+*+*+*+?&streamDownload=true")
.to("file://c:/var");我并不打算每2秒进行一次投票,但这说明了这个问题。因为我处理的是远程网络上的一个远程站点,所以我不希望一个激进的cron计划导致错误。
更新
如果我使用Spring而不是石英(在URI中将"quartz2“替换为"spring”),那么我就得到了所需的行为-- SFTP站点的轮询是序列化的。
所以我有我所需要的(我不认为我需要任何特定于Quartz的功能),但是这两个调度程序有不同的行为这一事实似乎是一个问题。有人知道默认行为应该是什么吗?这里有窃听器吗?
发布于 2014-06-23 07:05:45
这不是一个bug,它只是石英的工作方式。我们有同样的问题,为了解决这个问题,我们
第二点是必要的,因为石英队列触发的触发器没有可用的线程可执行。如果您不需要特定于石英的功能,那么您确实可以更好地使用其他组件,比如计时。
https://stackoverflow.com/questions/24347853
复制相似问题