Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule-将一个大的JSON列表拆分为多个较小的JSON列表_Mule_Mule Studio_Mule El - Fatal编程技术网

Mule-将一个大的JSON列表拆分为多个较小的JSON列表

Mule-将一个大的JSON列表拆分为多个较小的JSON列表,mule,mule-studio,mule-el,Mule,Mule Studio,Mule El,我有一个包含大约200个对象的json对象列表。我想将该列表拆分为更小的列表,其中每个列表最多包含20个对象。我想将每个子列表发布到基于HTTP的端点 <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" />

我有一个包含大约200个对象的json对象列表。我想将该列表拆分为更小的列表,其中每个列表最多包含20个对象。我想将每个子列表发布到基于HTTP的端点

<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>


您可以使用Groovy
collate
方法进行批处理,然后使用
foreach
收集拆分器,具体取决于您的需要:

<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()]"/>


这会将每批20个对象发送到http端点,然后展平到原始列表。

您可以使用Groovy
collate
方法进行批处理,然后使用
foreach
集合拆分器
,具体取决于您的需要:

<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()]"/>


这会将每批20个对象发送到http端点,然后展平到原始列表。

如果负载是Java集合,Muleforeach范围内置了批处理:

例如:

<foreach batchSize="20">
   <json:object-to-json-transformer/>
   <http:outbound-endpoint ... />
</foreach>

如果您的负载是Java集合,Muleforeach范围内置了批处理:

例如:

<foreach batchSize="20">
   <json:object-to-json-transformer/>
   <http:outbound-endpoint ... />
</foreach>