骆驼 - 停止处理异常路线

Camel - Stop processing a route on exception

我有一个处理 hl7 消息的骆驼路线。处理成功后我想把它传递给另一个端点b做进一步的处理。

但是如果在 processHL7 中发生任何异常,我有一个 catch 块来做一些处理。当我进入 doCatch 并遇到结束时,我想停止处理,但这并没有发生。无论发生什么情况,流量都会流向端点 b。当我进入 doCatch 块时如何停止?

from("direct:a") 
    .doTry()
      .to("bean:processHL7?method=process")        
    .doCatch(HL7Exception.class)
      .to("direct:ErrorACK")
      .transform(ack())
    .end()
    .transform(ack())       
    .to("direct:b");

这应该有效。

from("direct:a") 
    .doTry()
      .to("bean:processHL7?method=process")        
    .doCatch(HL7Exception.class)
      .to("direct:ErrorACK")
      .transform(ack())
      .stop()
    .end()
    .transform(ack())       
    .to("direct:b");

您可以使用 stop() 停止路由的进一步处理。