2

根据文档

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

但是,如果将 ForEach 中介器放在一个序列中,并在其中调用此序列,则可以在 ForEach 中介器中使用该中介器,如下例所示:

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

我观察到这可能会导致一些非常意想不到的结果,尤其是在 for each 与 callout 的返回混合之后的聚合有效负载。

在处理必须拆分原始消息并使用外部服务验证拆分部分中的一些数据的情况时,我偶然发现了这一点,但如果验证成功,仍需要对原始消息进行更多处理。

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

4

1 回答 1

3

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

于 2017-06-12T07:04:18.613 回答