下面是代码:
<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(...)
没有被触发吗?
2条答案
按热度按时间vxbzzdmp1#
让此解决方案发挥作用:
ma8fv8wu2#
在一般情况下你可以捕获所有异常(过滤if条件)