몇 가지 메시지를 수집하고 (10이라고 말하면 됨) 하나씩 전달하는 대신 서비스 활성화 자에게 목록으로 전달하고 싶습니다.스프링 통합 애그리 게이터 - 분실 한 메시지
컨텍스트 :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=...>
<int:channel id="ch.http.in"/>
<int:channel id="ch.http.trans"/>
<int:channel id="ch.http.aggr"/>
<int-http:inbound-channel-adapter path="test" channel="ch.http.in"/>
<int:map-to-object-transformer input-channel="ch.http.in" output-channel="ch.http.trans" type="demo.Req"/>
<int:aggregator
input-channel="ch.http.trans"
output-channel="ch.http.aggr"
release-strategy-expression="size() == 10"
correlation-strategy-expression="headers['id']"
ref="aggr" method="add"/>
<int:service-activator ref="srv" method="httpTest" input-channel="ch.http.aggr"/>
<bean id="srv" class="demo.IntService"/>
<bean id="aggr" class="demo.HttpAggregator"/>
</beans>
aggreagator :
public class HttpAggregator{
public List<Req> add(List<Req> reqs) {
System.out.println(reqs);
return reqs;
}
}
서비스 :
public class IntService {
public void httpTest(Req msg){
System.out.println(msg);
}
}
필수 단지 POJO이다.
문제는 집계 메소드가 호출되지 않는다는 것입니다. 집계 기가 없으면 메시지는 문제없이 서비스 활성기로 전달됩니다. 봄 통합 3.0.2.RELEASE (봄 부팅 1.0.2.RELEASE)를 사용하여
편집 : 변경 correlation-strategy-expression="headers['id']"
correlation-strategy-expression="payload.id"
에 그것은 내가 (모든 청크에 대해 서로 다른 ID를 통과 할 때 작동합니다 (필수 객체는 속성 ID를 가지고) 첫 번째 10은 id = 1, 다음 10은 2 ...) 이것이 상관 관계 분석의 작동 방식입니다. 나는 그것을 어떻게 넘어 설 수 있습니까? 난 단지 집계 된 목록의 크기를 제한하고 싶다.