Is there a reason you don't want to throw an exception?  If you have
multiple processors in a row like that all of which might throw exceptions
that certainly seems reasonable.  The other possibility here is to inject
your processors into one another in a chain of responsibility.  I usually
use a chain of Pojos if I need that but it would be similar.  Don't copy
this as I'm writing it in plain text after a long day flying and it's not
coming out of an IDE.  Plus I never use Processors/Exchanges and use
blueprint so don't know if the XML would match what you're after.  But you
get the idea.

public class MyProcessor implements Processor {
  Processor nextProcessor;
  //put in getters/setters
  public void process(Exchange exchange) throws Exception {
    // do something...
   //if logic is correct then call next processor otherwise return.
   nextProcessor.process(exchange);
  }
}

<bean id="processorChain" class="my.first.Processor">
   <property name="nextProcessor" ref="secondProcessor"/>
</bean>

etc.

<route>
  <from uri="direct:in">
  <bean ref="processorChain"/>
</route>



On Thu, Apr 21, 2016 at 2:09 PM, bocamel <johnz...@gmail.com> wrote:

> Thank you all very much for responding to my question and for offering
> solutions.  I have implemented my application using a combination of
> headers
> and <choice>.  But I also concluded that there is not a simple and elegant
> way to do what I intended to do.  I wish the great Camel team will add such
> a feature in a future release.
>
> <feature request>
>
> Add a new property header in Exchange:  ROUTE_RETURN
>
> When processing an exchange in a direct route, if this property is true,
> then Camel will stop propagating this exchange through the rest of the
> direct route and return the exchange back to the caller of the direct
> route.
> It is the responsibility of the user who sets this property to set the
> camel
> message body/headers so that the caller of the direct route can continue to
> process it.
>
> The exception/error handling can stay the same, i.e. they do not need to
> check this property.
>
> </feature request>
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/How-to-return-early-from-a-direct-subroute-tp5780262p5781499.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Reply via email to