首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel FTP2使用者与quartz2调度器-如何获得等价的有状态作业?

Camel FTP2使用者与quartz2调度器-如何获得等价的有状态作业?
EN

Stack Overflow用户
提问于 2014-06-22 03:22:59
回答 1查看 1.9K关注 0票数 0

我第一次在制作应用程序中使用Camel从一个远程的SFTP站点检索文件。我以为一切都解决了,但现在我只能尝试让端点基于cron表达式来激活,但没有同时运行两次轮询

使用Quartz2作为调度程序与FTP2组件一起使用看起来是一个完美的解决方案,只不过这将在另一个轮询正在进行时启动一个轮询(“有状态”选项在以这种方式使用时不可用),从而产生错误。

是否有一个选项,我错过了,将给予我相当于一个有状态的工作?我猜这是因为使用文件/FTP使用者的并发轮询在大多数情况下似乎并不理想!

下面是我的路由构建器的简化片段:

代码语言:javascript
复制
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的功能),但是这两个调度程序有不同的行为这一事实似乎是一个问题。有人知道默认行为应该是什么吗?这里有窃听器吗?

EN

回答 1

Stack Overflow用户

发布于 2014-06-23 07:05:45

这不是一个bug,它只是石英的工作方式。我们有同样的问题,为了解决这个问题,我们

  • 限制石英线池大小为1
  • 将fireTime交换头与"now“进行比较,如果增量大于1s,则停止路由执行。

第二点是必要的,因为石英队列触发的触发器没有可用的线程可执行。如果您不需要特定于石英的功能,那么您确实可以更好地使用其他组件,比如计时

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24347853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档