从Mule中的foreach组件获取有效负载时出现问题。
我在mule中使用foreach组件。我使用foreach迭代一个集合对象。对于foreach组件,我将发送一个集合负载作为输入。foreach迭代集合负载。但问题是我无法在下一个组件中获取迭代的foreach有效负载 这是我的代码Snippnet从Mule中的foreach组件获取有效负载时出现问题。,mule,Mule,我在mule中使用foreach组件。我使用foreach迭代一个集合对象。对于foreach组件,我将发送一个集合负载作为输入。foreach迭代集合负载。但问题是我无法在下一个组件中获取迭代的foreach有效负载 这是我的代码Snippnet <choice doc:name="Choice"> <when expression="#[ognl:instance=='Lamp']"> <processor-cha
<choice doc:name="Choice">
<when expression="#[ognl:instance=='Lamp']">
<processor-chain>
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="loops" value="0"/>
</message-properties-transformer>
<component class="com.Lamp" doc:name="Java"/>
<foreach doc:name="Foreach">
<component class="com.Candle" doc:name="Java"/>
<logger message="DDD #[message:payload]" level="INFO" doc:name="Logger"/>
<set-variable variableName="foreachPayload" value="#[message:payload]" doc:name="Payload"/>
</foreach>
</processor-chain>
</when>
请告诉我们这里的问题是什么以及解决方法
下面是我的信息流截图
在
foreach
组件之后,在变量中获取集合的最后一个值的原因是set variable
覆盖了原始消息中的foreachPayload
值。这是正确的行为。
也许您应该使用集合拆分器
而不是foreach
。处理集合中的每个元素后,请使用集合聚合器。这样,生成的有效负载就是一组处理后的值
<collection-splitter enableCorrelation="IF_NOT_SET"/>
<component class="com.Candle" doc:name="Java"/>
<collection-aggregator timeout="6000" failOnTimeout="false"/>
<collection-splitter enableCorrelation="IF_NOT_SET"/>
<component class="com.Candle" doc:name="Java"/>
<collection-aggregator timeout="6000" failOnTimeout="false"/>