Apache camel 如何在带有JavaDSL的路由中使用ApacheCamel在TryCatch块中使用choice

Apache camel 如何在带有JavaDSL的路由中使用ApacheCamel在TryCatch块中使用choice,apache-camel,Apache Camel,如何在带有JavaDSL的路由中使用ApacheCamel在TryCatch块中使用choice 我的情况是,我需要以下结构: 路线->起点->终点->选择->时间->简单->到->其他->到->终点->文件跟踪->到->终点跟踪->结束路线 到目前为止,我尝试了以下几行: .doTry() .choice() .when(header("CamelFileName").contains("xxxxx")) .to() .otherwise().to("c

如何在带有JavaDSL的路由中使用ApacheCamel在TryCatch块中使用choice

我的情况是,我需要以下结构:

路线->起点->终点->选择->时间->简单->到->其他->到->终点->文件跟踪->到->终点跟踪->结束路线

到目前为止,我尝试了以下几行:

    .doTry()
    .choice()
    .when(header("CamelFileName").contains("xxxxx"))
    .to()
    .otherwise().to("controlbus:route?routeId=XXXX&action=stop")
    .doCatch(java.lang.Exception.class)
    .log("STOPPING ROUTE")
    .to("controlbus:route?routeId=XXXX&action=stop&async=true")
但我在docatch上找不到符号错误


您能建议在Java DSL的try-catch块中使用choice的方法吗?

试试这个。这应该行得通

.doTry()
    .choice()
      .when(header("CamelFileName").contains("xxxxx"))
        .to()
      .otherwise()
        .to("controlbus:route?routeId=XXXX&action=stop")
.endDoTry()
.doCatch(java.lang.Exception.class)
.log("STOPPING ROUTE")
.to("controlbus:route?routeId=XXXX&action=stop&async=true")

试试这个。这应该行得通

.doTry()
    .choice()
      .when(header("CamelFileName").contains("xxxxx"))
        .to()
      .otherwise()
        .to("controlbus:route?routeId=XXXX&action=stop")
.endDoTry()
.doCatch(java.lang.Exception.class)
.log("STOPPING ROUTE")
.to("controlbus:route?routeId=XXXX&action=stop&async=true")

谢谢,效果很好。在doCatch之后,我添加了endDoCatch,但不幸的是,同样的错误找不到符号。请在下面的结构中建议使用endDoCatch的位置。doTry.choice.whenheaderCamelFileName.containsxxxxx.to.to.tocontrolbus:route?routeId=XXXX&action=stop.doCatchjava.lang.Exception.class.logSTOPPINGROUTE.tocontrolbus:ROUTE?routeId=XXXX&action=stop&async=true.endDoCatch.logtry-catch block end.log…像这样的行还有几行。你有没有试过使用刚才的。结束。end将结束当前的bloc,在您的情况下是catch BlockThank@pvpkiran这也很好。我的最后一个结构是.doTry.choice.whenheaderCamelFileName.containsxxxxx.to.Others.tocontrolbus:route?routeId=XXXX&action=stop.endDoTry.doCatchjava.lang.Exception.class.logSTOPPING route.tocontrolbus:route?routeId=XXXX&action=stop&async=true.end.loginterceptFromservlet*.whenbody.isNull.todirect:syntaxError.stop-我在google中找到了这个,但在SpringXML中也可以这样做。请让我知道上面JAVA DSL代码的代码片段,提前感谢感谢它工作得很好。在doCatch之后,我添加了endDoCatch,但不幸的是,同样的错误找不到符号。请在下面的结构中建议使用endDoCatch的位置。doTry.choice.whenheaderCamelFileName.containsxxxxx.to.to.tocontrolbus:route?routeId=XXXX&action=stop.doCatchjava.lang.Exception.class.logSTOPPINGROUTE.tocontrolbus:ROUTE?routeId=XXXX&action=stop&async=true.endDoCatch.logtry-catch block end.log…像这样的行还有几行。你有没有试过使用刚才的。结束。end将结束当前的bloc,在您的情况下是catch BlockThank@pvpkiran这也很好。我的最后一个结构是.doTry.choice.whenheaderCamelFileName.containsxxxxx.to.Others.tocontrolbus:route?routeId=XXXX&action=stop.endDoTry.doCatchjava.lang.Exception.class.logSTOPPING route.tocontrolbus:route?routeId=XXXX&action=stop&async=true.end.loginterceptFromservlet*.whenbody.isNull.todirect:syntaxError.stop-我在google中找到了这个,但在SpringXML中也可以这样做。请让我知道上面JAVA DSL代码的代码片段,谢谢。请建议如何在JAVA DSL中结束诸如endDoTry、endDoCatch.end之类的块。。还有多少endXXX保留字存在,如果可能的话,任何例子都要提前感谢请建议如何在JavaDSL中结束块,如endDoTry、endDoCatch.end。。还有多少endXXX保留字,如果可能的话,请举个例子,提前谢谢