No please read the javadoc of
org.apache.camel.spi.SynchronizationRouteAware

Its called 3 times because
- before routing
- after route
- done (either onComplete or onFailure)

On Thu, Oct 2, 2014 at 9:17 AM, Charles Moulliard <ch0...@gmail.com> wrote:
> Hi Max,
>
> Is it called 3 times because an exception has been throw in the route ? Do
> you have a test case that we could use to have a look and reproduce the
> issue ?
>
> Regards,
>
>
> On Thu, Oct 2, 2014 at 5:21 AM, Max Bridgewater <max.bridgewa...@gmail.com>
> wrote:
>
>> Some progress on this. It appears that in Camel 2.14, there is now an
>> interface called SynchronizationRouteAware in addition to Synchronization.
>> SynchronizationRouteAwarehas two additional methods onAfterRoute and
>> onBeforeRoute.
>>
>> What I've done is implement onAfterRoute and call my completion logic
>> there. I left onComplete and onBeforeRoute empty.
>>
>> Things seem to work well and the synchronization is called at the end of
>> the route as it was the case with Camel 2.13. The only caveat now is that
>> the synchronization is being called 3 times instead of just once.
>>
>> Why is this?
>>
>> My Synchronization looks as follows:
>>
>> exchange.getUnitOfWork().addSynchronization(
>>                             SynchronizationRouteAware(){
>>                         public void onAfterRoute(Route route,    Exchange
>> exchange){
>>                                 myCompletionLogic(exchange)
>>                         }
>>                         public void onBeforeRoute(Route route,  Exchange
>> exchange){
>>                             //Left Empty
>>                         }
>>                         public void      myCompletionLogic(Exchange x){
>>                             //My completion logic here
>>                         }
>>                         public void      onComplete(Exchange x){
>>                             //Left empty
>>                         }
>>                         public void      onFailure(Exchange x){
>>                             //Left empty
>>                         }
>>
>>                             }
>>
>>                         );
>>
>> On Wed, Oct 1, 2014 at 2:35 PM, Max Bridgewater <max.bridgewa...@gmail.com
>> >
>> wrote:
>>
>> > Hi,
>> >
>> > In Came 2.14, onCompletion now has a mode parameter that allows
>> > controlling if the onCompletion body is to be executed after or before
>> the
>> > route consumer.
>> >
>> > How does this impact UnitOfWork? Is there a way to also control when a
>> > synchronization is to be executed?
>> >
>> > I haven't fully isolated the issue yet. But I seem to have a case where
>> > UnitOfWork was executed before the route consumer while with Camel 2.14,
>> it
>> > is not executed after the route consumer has started.
>> >
>> > Any thoughts?
>> >
>> > Regards,
>> > Max.
>> >
>> >
>>
>
>
>
> --
> Charles Moulliard
> Apache Committer / Architect @RedHat
> Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Reply via email to