如果在上次处理期间发生异常,则延迟 Apache Camel 路由触发器

Dmi*_*riy 6 java apache-camel

Apache Camel 中是否有任何内置机制可以在上次路由处理期间发生异常时延迟路由的下一次触发时间?

例如,如果我有一条路线:

  • 每 5 秒触发一次
  • 从数据库中获取数据
  • 处理数据并构建消息
  • 向远程 ActiveMQ 实例发送消息

我希望能够处理这种情况:

如果数据库或ActiveMQ会宕机(维护或一些网络问题),导致路由处理过程中抛出异常,我想暂时延迟下次触发路由(例如等待5分钟再触发,给一些时间重新启动数据库\activemq) 并切换回 5 秒触发,当路由再次处理无异常时。或者甚至在每次失败的处理尝试中逐渐增加下一次触发的等待时间,没有失败(1 分钟/5 分钟/10 分钟),并在一切正常时切换回 5 秒的默认值。

我可以使用处理器、onException处理程序、一些数组来构建我自己的解决方法,以记住每个 routeId 的当前延迟状态以及choice()如果延迟则跳过整个路由运行的谓词,但也许Apache Camel 中有一些内置机制,因为它听起来像通常的用例场景?

小智 0

从 MQ、Kafka 消费时,可以使用节流路由策略。通过限制路由策略,如果接收器系统出现任何问题,您可以从源头控制数据 fetech