Search code examples
apache-camelintegrationhl7

Camel - Stop processing a route on exception


I have a camel route which processes hl7 messages. After the processing succeeds I would like to pass it to another endpoint b to do further processing.

But if any exception happens in processHL7, I have a catch block which does some processing. I want to stop processing when I go into the doCatch and encounter end, but this is not happening. Whatever happens the flow is going to endpoint b. How do i stop when I go into the doCatch block?

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

Solution

  • This should work.

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

    You can use stop() to stop the route from further processing.