camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gordienko, Max" <>
Subject completionFromBatchConsumer() and empty messages
Date Wed, 11 Jul 2012 01:43:14 GMT
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
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,

            int size = exchange.getProperty(Exchange.BATCH_SIZE, 0,
            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!

"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."

View raw message