下面是代码
<route id="StartMyRoute">
<from uri="direct:StartMyRoute"/>
<to uri="direct:myRoute2"/>
<onException>
<exception>SpecificException</exception>
<to uri="direct:myRoute3"/>
</onException>
</route>
我正在尝试与Java DSL相同
from("direct:StartMyRoute")
.routeId("StartMyRoute")
.to("direct:myRoute2")
.onException(SpecificException.class)
.to("direct:myRoute3");
这不起作用,但是后来我在起作用的全局范围内尝试了onException。 我有一些特定于路由的功能,应该在onException上执行,所以我不能使用全局作用域。 下面是我的代码具有全局范围
onException(SpecificException.class)
.to("direct:myRoute3");
from("direct:StartMyRoute")
.routeId("StartMyRoute")
.to("direct:myRoute2");
有人可以帮助我理解为什么未触发特定于路由的onException吗?
答案 0 :(得分:0)
得到解决方案
from("direct:StartMyRoute")
.routeId("StartMyRoute")
.onException(SpecificException.class)
.to("direct:myRoute3")
.end
.to("direct:myRoute2");
答案 1 :(得分:0)
通常,您可以捕获所有异常(如果有条件则进行过滤)
onException(Exception.class).process(new Processor() {
public void process(Exchange exchange) throws Exception {
if(exchange.getProperty(Exchange.EXCEPTION_CAUGHT) instanceof SpecialException.class){
//TODO something..
}
}).handled(true);