【问题标题】:Call/Send mediator inside ForEach mediator在 ForEach 中介器中调用/发送中介器
【发布时间】:2017-06-09 15:48:00
【问题描述】:

根据documentation

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 之后的聚合有效负载与标注的返回混合时。

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

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

【问题讨论】:

    标签: wso2 wso2esb wso2ei


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2013-02-06
      • 1970-01-01
      • 2020-07-03
      相关资源
      最近更新 更多