骆驼路线特定的onException未触发

时间:2020-03-16 18:22:40

标签: apache-camel spring-camel

下面是代码

<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 个答案:

答案 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);