1

파일을 읽고 첫 번째 열을 기준으로 각 줄과 그룹 줄을 분할해야합니다. 첫 번째 열 값이 변경되면 이전 그룹을 해제해야합니다. Spring 통합 DSL에서이를 수행 할 수 있습니까? 여기 스프링 통합 애그리 게이터는 다음 메시지 내용을 기반으로합니다.

방법 파일보기 등이며, 분류 것 :

x 1 
x 2 
x 3 
y 4 
y 5 
y 6 

아웃 된 풋이 아무튼 이후로 X = 1, 2, 3 및 y = 4, 5, 6 두 개의 메시지 있어야한다 메시지를 그룹화해야하는시기와 관련하여 다른 관련성이 없습니다. 다음 일치하지 않는 레코드를 누르 자마자 메시지를 그룹화 할 수 있습니까? 이 경우 아들이 4 번 줄에서 "y"를 누르고 이전 "x"메시지를 그룹화하고 놓으십시오. 커스텀 애그리 게이터를 사용할 수 있습니까?

답변

0

가장 간단한 해결책은 하나의 스레드에서 분할하여 집계하는 한 groupTimeout()에 의존하는 것입니다. 따라서 모든 기록은 처리되어 그룹에 배포됩니다. 그러나 우리가 그 (것)들을 풀어 놓는 방법을 모르기 때문에, 우리는 계획 한 시간 초과에 의지 할 것이다. 따라서 집계 자의 구성은 다음과 같습니다.

.aggregate(a -> a 
      .correlationExpression("payload.column1") 
      .releaseStrategy(g -> false) 
      .groupTimeout(1000) 
      .sendPartialResultOnExpiry(true) 
      .outputProcessor(g -> { 
       Collection<Message<?>> messages = g.getMessages(); 

       // iterate and build your output payload         

       }) 
      ) 
+0

답변을 주셔서 감사합니다. 나는 그것을 시도 할 것이다. –

+0

평균, 폴러를 사용하여 파일을 읽을 수있는 방법이 있지만 통합 흐름 대신 사용자 지정 방법을 사용하여 줄 단위로 읽고 그룹화하고 메시지로 내보낼 수 있습니까? –

+0

네, 파일 파싱을 위해 커스텀 메소드를 호출하는'.handle()'을 사용하면됩니다. –