2014-08-28 3 views
2

REST 끝점을 사용하는 Camel Route에서 Split/Aggregate 패턴을 작성하려고합니다. 요청 세부 정보 목록을 포함하는 요청 개체를 사용합니다. 요청 세부 정보를 병렬 처리하고 집계 된 결과를 호출자에게 반환하고 싶습니다. 나는 이것을 동기 호출로하고 싶다.Apache Camel 분할 및 집계 Loose 집계 결과

다음은 내 경로에있는 코드입니다.

나는 호출 결과가 Aggregate call, my response 객체의 결과라고 기대한다. 하지만 실제로 얻는 것은 REST 호출에서 반환 된 요청 개체입니다.

더 많은 로깅 문을 넣으면 Split 호출이 여러 스레드를 실행하는 것을 볼 수 있습니다. 그리고 위의 로그 문을 'Aggregation 이후 --->'에서 원하는 응답으로 볼 수 있습니다. 이것은 자신의 스레드입니다. 그러나이 출력은 어떻게됩니까? 어떻게하면 기본 Exchange로 다시 가져올 수 있으므로 REST 호출로 반환 될 수 있습니다. Apache Camel: Splitter에서

답변

1

:

스플리터가

낙타 2.3 새로운 반환 무엇

:

보통 스플리터는 기본적으로 원래의 입력 메시지가 반환됩니다. AggregationStrategy로 자신의 전략을 납품하여 당신이 무시할 수있는 모든 버전

를 들어

. 당신이 분할의 결과를 집계하려면

, 당신은 같은 것을 필요로 :

from("{{generate.route.endpoint}}") 
    .routeId(EXAMPLE_ROUTE_ID) 
    .split().method(RequestDetailsSplitter.class, responseAggregator) 
      .stopOnException().parallelProcessing() 
      .to("direct:processRequestDetails") 
      .end()    
    .log(LoggingLevel.INFO, "After Split aggregate ---> ${body}") 
    .removeHeaders("*") 
    .setHeader(Exchange.HTTP_RESPONSE_CODE, simple(String.valueOf(HttpStatus.SC_CREATED)));