未触发特定于骆驼路线的 onException
Camel route specific onException not triggered
下面是代码:
<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(...)
没有被触发?
使此解决方案有效:
from("direct:StartMyRoute")
.routeId("StartMyRoute")
.onException(SpecificException.class)
.to("direct:myRoute3")
.end
.to("direct:myRoute2");
通常你可以捕获所有的异常(如果条件过滤)
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);
下面是代码:
<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(...)
没有被触发?
使此解决方案有效:
from("direct:StartMyRoute")
.routeId("StartMyRoute")
.onException(SpecificException.class)
.to("direct:myRoute3")
.end
.to("direct:myRoute2");
通常你可以捕获所有的异常(如果条件过滤)
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);