我第一次在生产应用程序中使用Camel从远程SFTP站点检索文件。我以为我已经搞清楚了所有事情,但是现在我不得不尝试根据cron表达式 BUT 激活端点而不同时运行两个民意调查
使用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而不是quartz(在URI中用“spring”替换“quartz2”),那么我得到了所需的行为 - SFTP站点的轮询被序列化。
所以我有我需要的东西(我认为我不需要任何特定于Quartz的功能),但两个调度程序具有不同行为的事实似乎是一个问题。有谁知道默认行为应该是什么?这里有错误吗?
答案 0 :(得分:0)
这不是一个错误,它只是Quartz的工作原理。我们有同样的问题并解决它们
第二点是必要的,因为石英队列触发的触发器没有可执行的线程。如果您不需要特定于石英的功能,那么您可能会更好地使用其他组件,例如timer。