【问题标题】:Not able to retry Camel Route continuously in case of specific exception在特定异常的情况下无法连续重试骆驼路线
【发布时间】:2020-02-24 14:45:07
【问题描述】:

我是 Apache camel 的新手,我遇到了需要执行以下操作的情况

每当我收到特定类型的异常时,我需要再次重试完整的路由, 但是我在使用onException实现时面临循环错误处理异常和无限递归的问题。

下面是我的虚拟代码

 from("direct:updateTheTask")
.to("direct:getWoTaskDetail")
.to("direct:getSoTaskDetail")
.to("direct:updateTaskDetail")
.to("direct:getSoTaskDetail")   
.to("direct:getWoTaskDetail")
.to("direct:endRoute");


 from("direct:updateTaskDetail").routeId("updateTaskDetail")
.bean(BEAN, Constants.SET_PARAMS)
.to("direct:restUpdate")
.to(getGetResponseBeanUrl(BEAN));

我调用了“direct:updateTheTask”路由,并且“direct:updateTaskDetail”在我的情况下给出了异常,当收到异常时我想从“direct:updateTheTask”再次重试维护/持久化数据交换。

如果“direct:updateTaskDetail”在此递归过程中没有抛出此类异常,则路由应正常完成。

我使用了以下 2 种方法,但似乎对我不起作用。

onException(TaskException.class)
.handled(true)
.maximumRedeliveries(-1)
.redeliveryDelay(20);

另一种方法是

onException(TaskException.class)
.handled(true)
.delay(20)
.to("direct:updateTheTroubleTicket");

【问题讨论】:

    标签: java spring apache-camel spring-camel


    【解决方案1】:

    关闭任务路由中的错误处理程序,以便在调用此路由时,Camel 将重试整个路由,而不是路由错误处理程序将在错误发生时重试。

    from("direct:updateTheTask")
      .errorHandler(noErrorHandler());
      .to("direct:getWoTaskDetail")
    

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 2020-05-13
      • 1970-01-01
      • 2014-09-23
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多