在ForEach调解员

时间:2017-06-09 15:48:00

标签: wso2 wso2esb wso2ei

根据documentation

  

ForEach不允许在序列中使用Call,Send和Callout介体。

但是如果将ForEach介体放在序列中,可以在ForEach介体中使用Call / Send / Callout介体,并在其中调用此序列,如下例所示:

<!-- myProxy.xml -->
<for-each expression="//foo" >
    <sequence>
      <sequence key="myCallSequence"/>
    </sequence>
</for-each>


<!-- myCallSequence.xml -->
<call>
    <endpoint>
        <address format="soap11" uri="http://my.uri.com"/>
    </endpoint>
</call>

我观察到的结果可能会导致一些非常意外的结果,特别是关于每个与回调标注混合后的聚合有效负载。

我遇到这种情况时遇到了这种情况,我不得不拆分原始消息并使用外部服务验证分割部分的一些数据,但如果验证成功,仍然需要对原始消息进行更多处理。

这种配置被认为是一种不好的做法吗?如果是这样,为什么?

1 个答案:

答案 0 :(得分:1)

仅当您需要以迭代方式(例如,数组)转换有效负载时,才应使用ForEach介体。 ForEach介体未实现以支持呼叫后端。如果您需要实现此用例,请使用允许您调用后端的Iterate介体。有关详细信息,请参阅https://docs.wso2.com/display/EI611/Iterate+Mediator

相关问题