java - 在特定异常的情况下无法连续重试骆驼路线
问题描述
我对 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");
解决方案
关闭任务路由中的错误处理程序,因此在调用此路由时,Camel 将重试整个路由,而不是路由错误处理程序将在错误发生时重试。
from("direct:updateTheTask")
.errorHandler(noErrorHandler());
.to("direct:getWoTaskDetail")
推荐阅读
- sql - Informatica PowerCenter 中的平面文件
- python - 如何在 Pytest 参数化功能中调用对象的属性
- java - jOOQ 与 java 15:org.jooq 中的接口 org.jooq.Record 和 java.lang 中的类 java.lang.Record 匹配
- css - 如何使用字体 svg 图标
- twitter-bootstrap - 如何添加相同高度的 Bootstrap 列?
- r - R split:重用向量中的第 i 个元素使拆分相等
- javascript - 在反应中使用treebeard动态添加孩子
- python - argv vs bash 扩展/命令替换/python
- pandas - scipy.optimize 是否有方程限制?
- javascript - axios:数据应该是字符串,Buffer或者Uint8Array