需要Apache Camel在后台每隔10分钟调用一次自定义处理器

问题描述

我们在项目中使用Apache Camel来满足REST,SFTP,SOAP等多个端点的需要。这是计划作业的一部分,如果要处理的记录太多,有时可能要运行数小时。 有时候,我们的工作(或更确切地说,流程)在任何骆驼路线上都停留了数小时。 我们的要求是终止长期运行/卡住的作业。 因此,我们正在寻找的是,一旦我们使用context.start()开始工作,就创建一个自定义处理器,该处理器每X分钟可以调用一次。 在该定制处理器中,我们将编写用于继续或终止作业等的定制逻辑。

我们在Camel中是否有任何这样的机制来编写可在主要运行的Camel上下文中经常由Camel触发的自定义处理器? 任何帮助/指针将不胜感激。

解决方法

您可以添加另一个定期触发的Camel Route,并调用处理器。对于定期触发,您可以从多个组件中进行选择。

  • Camel Timer>没有依赖关系,但大多数是原始的,基于JDK Timer)
  • Camel Scheduler>无依赖,更多选项,基于ScheduledExecutorService)
  • Camel Quartz>需要骆驼石英,大量选项,支持Cron表达式
  • Camel Cron>仅在Camel 3中支持Cron表达式