2014-03-05 2 views
1

약 200 개의 개체가 포함 된 json 개체 목록이 있습니다. 나는 그 목록을 각각 최대 20 개의 개체가 들어있는 작은 목록으로 나누고 싶다. 각 하위 목록을 HTTP 기반 끝점에 POST하고 싶습니다.Mule - 큰 JSON 목록을 여러 개의 작은 JSON 목록으로 분할합니다.

<flow name="send-to-next-step" doc:name="send-to-vm-flow"> 
    <vm:inbound-endpoint exchange-pattern="one-way" 
     path="send-to-next-step-vm" doc:name="VM" /> 
    <!-- received the JSON List payload with 200 objects--> 
    <!-- TODO do processing here to split the list into sub-lists and call sub-flow for each sub-list 
    <flow-ref name="send-to-aggregator-sf" doc:name="Flow Reference" /> 
</flow> 

한 가지 가능한 방법은 I리스트상에서 각 오브젝트 (20)의 반복 처리가 반복 후, 서브 플로우 호출 자바 성분 물품이다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

3

당신은 배치에 대한 그루비 collate 방법을 사용하고 foreach 또는 collection-splitter 수, 필요에 따라이가 HTTP 엔드 포인트에 20 개 개체의 각 배치를 보낸 다음에 다시 평평하게됩니다

<json:json-to-object-transformer returnClass="java.util.List"/> 
<set-payload value="#[groovy:payload.collate(20)]"/> 
<foreach> 
    <json:object-to-json-transformer/> 
    <http:outbound-endpoint exchange-pattern="request-response" host="0.0.0.0" port="8082" path="xx"/> 
</foreach> 
<set-payload value="#[groovy:payload.flatten()]"/> 

원래 목록.