Hello,
I'm getting a strange behavior with the aggregator with SI 2.1.4 as compared to SI 2.0.3. Reduced to a test case which just accumulates up to two messages before releasing:
With the configuration:Code:public class AgTest { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); MessageChannel ch = (MessageChannel) ctx.getBean("channel1"); MessagingTemplate template = new MessagingTemplate(); for(int z = 0 ; z < 5 ; z ++) { template.send(ch, MessageBuilder.withPayload(1).build()); template.send(ch, MessageBuilder.withPayload(2).build()); } } public Integer aggregate(List<Integer> numbers) { return 666; } public Integer correlate(Integer number) { return 1; } public boolean canRelease(List<Integer> numbers) { return numbers.size() == 2; }
With SI 2.1.4 I just get one "666" on stdout. With SI 2.0.3 I get (as I expected) five times a "666". Is this a change in the behavior?Code:<int:channel id="channel1"/> <int:aggregator id="ag" input-channel="channel1" ref="agm" method="aggregate" output-channel="channel2" send-partial-result-on-expiry="true" correlation-strategy="agm" correlation-strategy-method="correlate" release-strategy="agm" release-strategy-method="canRelease" /> <bean id="agm" class="com.borrar.AgTest"/> <int:channel id="channel2"/> <stream:stdout-channel-adapter id="stout" channel="channel2" append-newline="true"/>
regards,
Diego


Reply With Quote