On Thu, Oct 20, 2011 at 2:30 PM, Mathieu Lalonde <[email protected]> wrote:
>
> Hi,
>
> I was wondering what was the best way to resubmit exchanges that did not get 
> aggregated within a given timeout.
>

What do you mean by resubmitting? The timeout occurs due the
aggregation group did not complete within a given time period.
So in your example if after X period of inactivity, and then any of
the other regular completion conditions did not occur (eg
completionSize)
then the timeout triggers instead. So you can't really resubmit anything.

And yes checking that header is a good solution.

Alternatively you can implement TimeoutAwareAggregationStrategy as
your aggregation strategy
and do custom code in the timeout method, such as setting some exception etc.



>
> from("direct:aggregate")
>   .aggregate(MyStrategy).completionSize(2).completionTimeout(..)
>   .to("mock:result");
>
> It seems like the completionTimeout is to decide when the exchanges should be 
> considered aggregated.  I saw an option for discarding exchanges aggregated 
> only because of completionTimeout but this is not what I want.  I want them 
> to be considered failed Exchanges so that they can be resubmitted (via 
> onException()).
>
> Our fallback approach would be to throw an exception if 
> Exchange.CamelAggregatedCompletedBy == timeout.  I was just wondering if 
> there was a more elegant idiom.
>
> Thanks!
> Mathieu
>
>
> P.S. I checked out
> http://camel.apache.org/aggregator2.html
> http://camel.apache.org/aggregate-example.html
>
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: [email protected]
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to