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

时间:2018-11-27 09:42:55

标签: java apache-camel

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

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

  • 每5秒钟触发一次
  • 从数据库中获取数据
  • 处理数据并生成一条消息
  • 将消息发送到远程ActiveMQ实例

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

如果数据库或ActiveMQ将崩溃(维护或某些网络问题),导致在路由处理期间引发异常,我想暂时延迟下一次将触发路由(例如等待5分钟再触发一次,给一些时间)重新启动数据库\ activemq),并在路由再次正常处理时切换回5秒触发。甚至在每次尝试失败均无失败的情况下逐渐增加等待下一次触发的等待时间(1分钟/ 5分钟/ 10分钟),并在一切正常时切换回默认值5秒。

我可以使用处理器,onException处理程序,一些数组来记住每个routeId的当前延迟状态来构建我自己的解决方法,并且choice()可以断言如果延迟,整个路由将不运行,但是也许某些听起来像通常的用例场景的 Apache Camel 中内置的机制?

0 个答案:

没有答案