【问题标题】:Camel route specific onException not triggered骆驼路线特定的onException未触发
【发布时间】:2021-09-05 06:27:03
【问题描述】:

下面是代码:

    <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(...)

【问题讨论】:

    标签: apache-camel spring-camel


    【解决方案1】:

    得到这个解决方案的工作:

    from("direct:StartMyRoute")
        .routeId("StartMyRoute")
        .onException(SpecificException.class)
        .to("direct:myRoute3")
        .end
        .to("direct:myRoute2");
    

    【讨论】:

      【解决方案2】:

      通常你可以捕获所有异常(过滤if条件)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 2018-09-05
        • 2011-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多