Hi

No you would need to filter the message so the empty message wont get
aggregated.

But I guess since this is a new option on the batch consumers we
should take that into account in the aggregate EIP.
Do you mind log a JIRA ticket about this?


On Wed, Jul 11, 2012 at 3:43 AM, Gordienko, Max <max.gordie...@anz.com> wrote:
> Hi all,
>
> I am using a file consumer in the batch mode to consume all the files in
> a directory.
> I aggregate them all together using  aggregate(constant(true), new
> MyAggregationStrategy()).completionFromBatchConsumer()
> And it works just fine.
>
> Now I need to be notified if there is nothing to consume (the directory
> is empty). So I use sendEmptyMessageWhenIdle=true
> which works just fine by itself.
>
> But if I use both sendEmptyMessageWhenIdle and
> completionFromBatchConsumer() the aggregation never completes.
>
> Tested with camel 2.10.0
> I found this completion logic in AggregateProcessor.isCompleted(String,
> Exchange)
>
>             int size = exchange.getProperty(Exchange.BATCH_SIZE, 0,
> Integer.class);
>             if (size > 0 && batchConsumerCounter.intValue() >= size) {
>                 ....
>             }
>
> In other words the aggregate will never complete if there is nothing in
> the batch.
>
> Is there an elegant way to aggregate a flow even if the batch is empty?
>
> Thank you!
>   Max
>
> "This e-mail and any attachments to it (the "Communication") is, unless 
> otherwise stated, confidential,  may contain copyright material and is for 
> the use only of the intended recipient. If you receive the Communication in 
> error, please notify the sender immediately by return e-mail, delete the 
> Communication and the return e-mail, and do not read, copy, retransmit or 
> otherwise deal with it. Any views expressed in the Communication are those of 
> the individual sender only, unless expressly stated to be those of Australia 
> and New Zealand Banking Group Limited ABN 11 005 357 522, or any of its 
> related entities including ANZ National Bank Limited (together "ANZ"). ANZ 
> does not accept liability in connection with the integrity of or errors in 
> the Communication, computer virus, data corruption, interference or delay 
> arising from or in respect of the Communication."



-- 
Claus Ibsen
-----------------
FuseSource
Email: cib...@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to