ule子错误-集合拆分器-HTTP返回时引发异常

时间:2018-12-07 16:37:22

标签: mule

得到一个有趣的异常。使用拆分器处理器使用集合拆分器拆分集合。它可以很好地拆分集合,但是当流程返回到主流程并且流程结束时,它将引发此异常。想知道您之前是否看过它:

错误2018-12-07 16:06:26,052 [[ahld_kpi_enabler] .HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy:异常策略中捕获了异常:java.lang.UnsupportedOperationException:getPayloadAsBytes(),那里试图直接访问不支持的消息集合的有效负载。 请从messageList检索值或使用getPayload(DataType.BYTE_ARRAY_DATA_TYPE) java.lang.RuntimeException:java.lang.UnsupportedOperationException:getPayloadAsBytes(),已经尝试直接访问不支持的消息集合的有效负载。 请从messageList检索值或使用getPayload(DataType.BYTE_ARRAY_DATA_TYPE)

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

集合拆分没有任何聚合发生,它仅用于拆分集合,并对集合中的每个对象进行后续调用/操作

1 个答案:

答案 0 :(得分:1)

在使用集合分割器的流程结束时,您的有效负载将成为Mule消息集合,并且在您使用HTTP时,它将尝试将其序列化为HTTP响应,但不能。

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

或者您可以将集合拆分器和其后的逻辑放在一个单独的流中,包装在浓缩器中:

<enricher target="#[flowVars.someVar]">
   <flow-ref name="myCollectionSplitterLogicFlow" />
</enricher>

或者您也可以使用foreach,我个人建议这样做,因为在Mule 4中已删除了分离器。

如果您有嵌套集合,则可以有任意数量的嵌套foreach

<foreach collection="#[payload]">
   <foreach collection="#[payload.nestedCollection]">

   </foreach>
</foreach>