spring-camel - 如何在 RouteTemplate 上添加全局异常处理
问题描述
我正在寻找一种在多个 RouteTemplates 生成的所有路由上添加全局异常处理的方法。我尝试了以下方式,但 onException 块没有被添加到路由中。
你能帮我理解我做错了什么吗?
谢谢
public abstract class BaseRouteBuilder extends RouteBuilder {
@Override
public void configure(){
this.onException(IllegalStateException.class)
.log("global onException")
.maximumRedeliveries(2)
.redeliveryDelay(100)
.logStackTrace(true)
.to("direct:retryChannel");
}
}
public static class SampleRouteTemplate extends BaseRouteBuilder {
@Override
public void configure() {
super.configure();
this.routeTemplate("myTemplate")
.templateParameter("parameter1")
.from("direct:start")
.setHeader("parameter1", constant("value1"))
.log("RouteCompleted");
}
}
解决方案
尝试为路由提取一个单独的方法,例如configureRoute()
并在configure() method
. 还要使子类成为非静态的。
public abstract class BaseRouteBuilder extends RouteBuilder {
@Override
public final void configure(){
onException(IllegalStateException.class)
.log("global onException")
.maximumRedeliveries(2)
.redeliveryDelay(100)
.logStackTrace(true)
.to("direct:retryChannel");
configureRoute();
}
public abstract void configureRoute();
}
public class SampleRouteTemplate extends BaseRouteBuilder {
@Override
public void configureRoute() {
this.routeTemplate("myTemplate")
.templateParameter("parameter1")
.from("direct:start")
.setHeader("parameter1", constant("value1"))
.log("RouteCompleted");
}
}
}
推荐阅读
- python - (Python) 在线程中关闭 pygame.display
- mysql - SQL查询查找在某些2日期增加值的所有产品
- php - 单个 PHP 文件,可以擦除包含子文件夹的文件夹内的所有内容以及文件本身
- python - 如何转换类型”
" 在 python 中听写 - javascript - 两个不同数组的 addEventListener - forEach -代码优化
- python - LightGBM - sklearnAPI 与训练和数据结构 API 以及 lgb.cv 与 gridsearchcv/randomisedsearchcv
- angular - 如何将 promise.all 转换为 observables
- react-native - 如何将 .gif 文件添加到 EXPO 斜线屏幕
- corda - 出现计数器流错误:从验证公证人更改为非验证公证人时
- android - FCM 通知的工作代码现在不起作用?