我需要创建onException,在整个路由构建器上是全局的,以便不为我创建的每个路由构建器重写相同的行。 我的异常处理程序的当前范围是特定路由构建器的驼峰上下文。我需要创建路由构建器类r1和r2,以使用相同的onException()。process。
我使用的当前工作onException:
def configure {
onException(classOf[CustomException]).process(exceptionProcessor).
process(doExtraProcess)
from(address).
process(doSmth).
process(doSmthElse)
}
当我将configEx方法中的onException()行移动到类级别时,如下所示:
onException(classOf[CustomException]).process(exceptionProcessor).
process(doExtraProcess)
def configure {
from(address).
process(doSmth).
process(doSmthElse)
}
我收到了这个错误:
引起:org.apache.camel.FailedToCreateRouteException:失败 在以下位置创建路线route52:>>> OnException [[class CustomException] - > [process [null],process [null]]]<<<在途中: 路线[[来自[direct:locus]] - > [OnException [[...因为ref必须是 指定于:process [null]
引起:java.lang.IllegalArgumentException:必须指定ref on:process [null]
答案 0 :(得分:4)
首先,需要通过configure()方法调用onException()。接下来,您可以使用继承来重用异常处理。只需创建一个父RouteBuilder类,并在方法中放置常见的异常处理。然后让每个子类在其configure()方法中调用该公共方法...