我正在尝试为我的骆驼上下文中所有路由抛出的所有异常配置一个异常处理程序。我的方法如下,没有运气:
- 实例化默认的骆驼上下文
- 从 spring 上下文中检索 RouteDefinition 列表
- 通过调用 ctx.addRouteDefinitions() 将这些定义添加到骆驼上下文
- 从 java dsl 定义的 RotueBuilder (ctx.addRoutes(new MyErrorHandlerRouteBuilder()) 添加我的异常处理程序路由
- 启动骆驼上下文
此时,spring 中定义的路由内抛出的异常由 DefaultErrorHandler 处理,而不是我要定义的那个。这是我的错误处理路由定义的样子
public class MyErrorHandlerRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
onException(Exception.class)
.routeId("errorHandlerRoute")
.handled(true)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Throwable caused = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
// do some custom processing of the exception
}
})
.stop();
}
我还能尝试什么,或者我哪里出错了?