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

Upvotes: 1

Views: 2752

Answers (1)

pvpkiran
pvpkiran

Reputation: 27048

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.

Upvotes: 1

Related Questions