Mar 17th, 2011, 07:26 PM
Questions on aggregator
I'm trying to use aggregator (for the first time) and have run into some problems (maybe just my understanding of how it works):
I want to aggregate messages in groups of 100, but send partial groups if the aggregation is taking "too long". My test set of messages has 1147 messages in it.
I've tried configuring a TimeoutCountSequenceSizeReleaseStrategy http://static.springsource.org/sprin...eStrategy.html with a threshold of 100 and a timeout of 90000. I expected the last 47 messages to wait a minute and a half before being passed on; but all messages came through immediately (which is actually OK behavior for my use case). I then thought "if the timeout doesn't make a difference, I'll just use release-strategy-expression="payload.size() gt 100", like it says in the docs". When I changed to expression I got the exception "Field or property 'payload' cannot be found on object of type 'java.util.Collections$UnmodifiableCollection'". So, it looks like the expression is operating on the List. I changed the expression to "size() gt 100" and got 11 groups of 101, but the last 35 never came through.
Am I not understanding the TimeoutCountSequenceSizeReleaseStrategy? Is there no default timeout using SpEL release strategy? I'll carry on using TimeoutCountSequenceSizeReleaseStrategy but thought I'd raise the question here.