Spring 跨驼峰上下文的全局异常处理程序–;覆盖所有路线

Spring 跨驼峰上下文的全局异常处理程序–;覆盖所有路线,spring,spring-boot,apache-camel,spring-camel,camel-ftp,Spring,Spring Boot,Apache Camel,Spring Camel,Camel Ftp,我有10条骆驼路线,如下所示: @allargsconstuctor 公共类MyCamelRoute扩展了RouteBuilder{ /** *{@inheritardoc} */ @凌驾 public void configure()引发异常{ } } 上面的MyCamelRoute是使用下面的代码创建的,该代码将camelRoute加载到Spring容器中: @Bean(“myCamelRoute”) 公共路由生成器createMyCamelRoute(){ 返回新的MyCamelRo

我有10条骆驼路线,如下所示:

@allargsconstuctor
公共类MyCamelRoute扩展了RouteBuilder{
/**
*{@inheritardoc}
*/
@凌驾
public void configure()引发异常{
}
}  
上面的
MyCamelRoute
是使用下面的代码创建的,该代码将camelRoute加载到Spring容器中:

@Bean(“myCamelRoute”)
公共路由生成器createMyCamelRoute(){
返回新的MyCamelRoute();
}

现在,我需要一个跨Camel上下文的全局异常处理程序—覆盖所有路由。

您可以从

Java DSL的全局作用域是每个RouteBuilder实例,因此,如果希望在多个RouteBuilder类之间共享,则创建一个基本抽象RouteBuilder类,并将错误处理逻辑放入其配置方法中。然后扩展这个类,并确保为super.configure()初始化。我们只是在使用Java继承技术

换句话说,BaseRouteBuilder类将是:

public abstract BaseRouteBuilder extends RouteBuilder {

@Override
public void configure() {
   onException(Throwable.class).log("Excpetion caught");
}
然后是你的路线:

@AllArgsConstructor
public class MyCamelRoute extends BaseRouteBuilder {

    /**
     * {@inheritDoc}
     */
    @Override
    public void configure() throws Exception {
        super.configure();
        // Route Configuration here
    }
}

如前所述,从子类调用
super.configure()
非常重要,否则将不会执行exception子句