2013-03-15 9 views
1

저는 스프링 통합과 스프링을 통해 구현하고있는 JMS와 관련하여 간단한 질문을하고 있습니다. 그러나 한 가지 상황에 갇혀 있습니다. 내게 알려주세요. 20 개의 메시지 그룹을 모아서 전달하고 싶습니다. 즉, 5000 개의 메시지에서 20 개의 메시지를 취하고 20 개의 메시지를 전달하는 일종의 집계가 필요하다는 것을 의미합니다.이를 달성하는 방법을 알려주십시오. 봄 통합 참조 설명서의이 섹션은 모든 정보를 제공해야 http://www.eaipatterns.com/Aggregator.html메시지 집계 관련

+0

"패턴"을 잊어 버리십시오. * 문제 *를 정의하십시오! Q : "집계"란 정확히 무엇을 의미합니까? 전달할 메시지를 결정하는 기준과 삭제할 메시지는 무엇입니까? 왜 정확히 어떤 것을 버려야합니까? "잘못된"메시지를 삭제했을 때의 결과는 무엇입니까? * 실제 "요구 사항"은 무엇입니까? ??? – paulsm4

+0

제발 코어 자바도 이것을 얻을 수있는 조언을 ..! –

답변

0

나는 비슷한 문제가 있었는데, 나는 그것을 해결하기 위해 atomicLong을 가진 각 메시지에 카운터를 만들었다.

다음, releast 전략은

<int:aggregator ... 
    release-strategy-expression="size() == ${max.size}" 
    correlation-strategy-expression="new java.lang.Double(new java.lang.Double(headers.message_id)/${max.size}).longValue()" 
    /> 

(A MESSAGE_ID 헤더로 저장)이 카운터에 따라 X 메시지 후 모든 메시지를 발표 할 예정이다 그리고 헤이, 그것은 작동합니다.

+0

당신은 위대한 도움이 될 것입니다 전체 코드를 게시하시기 바랍니다 수 있습니다 감사합니다 inadvance –

+0

그건 마법의 .. 코드가 전혀 없습니다. 사용자 mfisher 상태이므로 릴리스 전략 및 상관 전략에 대한 xml 정의 만 있으면됩니다. 메시지를 해제 할시기 및 메시지 그룹화 방법 – josete

1

나는 또한이 패턴을 통해 가고 있었다 .. 다음이 필요합니다 이 http://static.springsource.org/spring-integration/docs/2.2.x/reference/htmlsingle/#aggregator

은 기본적으로 당신이 반환하는 릴리스 전략을 원하는 메시지 그룹 크기가 20에 도달하면 true이고 그룹 구성원의 다른 표시기가없는 한 모든 메시지가 단순히 같은 그룹에 속한다고 간주하는 상관 관계 전략이 필요합니다.

희망이 있습니다. -Mark

관련 문제