나는 데이터베이스에서 행을 읽고, 스플리터를 사용하여 분할하고, 병렬로 처리하고 데이터베이스를 집계 및 업데이트하는 경로를 구현하고 있습니다. 스플리터 경로에 입력이 하나 뿐인 경우 예상대로 작동합니다. 스플리터 모두가 병렬로 처리 할 수있다 (프로세싱을 완료하기 위해 몇 분을 복용 각) I 직접 3 메시지를 보낼 때 샘플 아파치 낙타 쪼개는 도구에 입력으로 동시 교환을 찾고
<route>
<from uri="direct:splitter"/>
<log message="batch id- $simple{header.BATCH_NUMBER}, loop index - $simple{property.CamelLoopIndex}" />
<split strategyRef="aggregatorStrategy" executorServiceRef="myPool">
<simple>${body}</simple>
<log message="batch id- $simple{header.BATCH_NUMBER}, loop index - $simple{property.CamelLoopIndex}, split index - $simple{property.CamelSplitIndex}" />
<to uri="bean:gisResponseProcessor" />
</split>
</route>
를 코드 -. 이것을 시도 할 때, 모든 3 개의 입력에 대한 스플리터 외부의 첫 번째 로그 메시지가 즉시 인쇄됩니다. 그러나 분할 자의 로그 메시지는 3 개의 교환기가 차례로 분할되어 있음을 나타냅니다. 각 스레드의 하위 메시지는 스레드 풀을 사용합니다. 스플리터가 3 개의 입력 교환을 병렬로 분할하는 방법이 있습니까?
myPool
라는 스레드 풀에서 최소 6 개 스레드를 사용할 수있다, 당신은뿐만 아니라 해당 옵션을 설정할 필요가 없습니다. –내가 제안한 경로를 시도했지만 비슷한 로그 메시지가 계속 표시됩니다. 나는 스플리터 전에 평행하게 보인다. 스플리터는 한 번에 하나의 입력 교환 만 처리 (병렬로 처리되는 많은 하위 메시지로 분할)합니다. 스플리터에 여러 입력을 병렬로 소비하려면 sedaSplitter와 같은 여러 경로를 구성해야합니까? –