Mule错误-Collection拆分器-HTTP返回时引发异常

Mule错误-Collection拆分器-HTTP返回时引发异常,mule,Mule,得到一个有趣的异常。使用拆分器处理器使用集合拆分器拆分集合。它会很好地分割集合,但是当流返回到主流并且流结束时,它会抛出此异常。想知道你以前是否见过它: 错误2018-12-07 16:06:26052[[ahld_kpi_enabler].HTTP_Listener_Configuration.worker.01]org.mule.exception.defaultMessaginExceptionStrategy:java.lang.UnsupportedOperationException

得到一个有趣的异常。使用拆分器处理器使用集合拆分器拆分集合。它会很好地分割集合,但是当流返回到主流并且流结束时,它会抛出此异常。想知道你以前是否见过它:

错误2018-12-07 16:06:26052[[ahld_kpi_enabler].HTTP_Listener_Configuration.worker.01]org.mule.exception.defaultMessaginExceptionStrategy:java.lang.UnsupportedOperationException:getPayloadAsBytes(),有人试图直接访问消息集合的有效负载,这是不受支持的。 请从messageList中检索值或使用getPayload(数据类型.字节数组数据类型) java.lang.RuntimeException:java.lang.UnsupportedOperationException:getPayloadAsBytes(),有人试图直接访问消息集合的有效负载,这是不受支持的。 请从messageList中检索值或使用getPayload(数据类型.字节数组数据类型)

该流通过HTTP触发,并进行出站HTTP调用


集合拆分不会发生聚合,它仅用于拆分集合,并且对于集合中的每个对象,会执行子序列调用/操作

在流的末尾,使用集合拆分器时,您的负载将是一个Mule消息集合,并且使用HTTP,它将尝试将其序列化为HTTP响应,但它不能

因此,您可以聚合负载,然后将负载设置为要返回的内容,甚至可以设置为
#[null]

或者,您可以将您的收集拆分器和逻辑放在一个单独的流中,并封装在enricher中:

<enricher target="#[flowVars.someVar]">
   <flow-ref name="myCollectionSplitterLogicFlow" />
</enricher>
是的,
是正确的选择。
<foreach collection="#[payload]">
   <foreach collection="#[payload.nestedCollection]">

   </foreach>
</foreach>