2014-01-25 2 views
1

50 개의 수신 메시지를 축적 한 후에 만 ​​출력 채널로 메시지를 보내는 방식으로 스프링 통합 채널을 설정하는 방법이 있습니까? 폴링 관점에서 볼 때 폴링 프로세스를 고정 된 시간 간격 대신 메시지 수를 기반으로합니다. 어쨌든 이전 채널을 여러 번 폴링 할 수 있지만 일단 처리 할 수만 있으면 메시지 만 수락하십시오.한계에 도달 할 때까지 채널에 메시지를 보관하십시오.

답변

3

release-strategy-expression="size == 50"correlation-strategy-expression="'foo'" (및 expire-groups-on-completion="true)과 함께 <aggregator/>을 사용하십시오. 만료 그룹 설정을 사용하면 다음 그룹 ('foo')을 만들 수 있습니다.

간단히 <splitter /> (표현식 없음, 그냥 입력/출력 채널)으로 수집기를 따라 가십시오.

어 그리 게이터는 도착할 때까지 메시지를 누적 한 다음 콜렉션으로 해제하고 스플리터는 콜렉션을 다시 단일 메시지로 분리합니다.

크기 또는 경과 시간 (x 초가 경과하면 짧은 그룹 해제)을 기준으로 해제하려면 MessageGroupStoreReaper을 구성하십시오.

+0

'correlation-strategy-expression = "'foo '"를 지정하면 각 메시지에 foo로 더한 값을 추가 할 것인가, 아니면 합쳐질 파일에 헤더에 이미 존재할 것으로 기대하는 값인지를 지정합니다. 기본적으로 나는 aggregator가 작동하도록 들어오는 메시지에이 헤더 값을 추가했는지 궁금합니다. 감사합니다 – adeelmahmood

+0

아니오; 이것은 단순히 상수 (''foo'')를 상관 관계에 사용하는 것입니다. 머리글에 관계없이 모든 메시지는 같은 그룹에 있습니다. 기본 상관 식은'headers [ 'correlationId']'입니다. –

관련 문제