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>
我观察到的结果可能会导致一些非常意外的结果,特别是关于每个与回调标注混合后的聚合有效负载。
我遇到这种情况时遇到了这种情况,我不得不拆分原始消息并使用外部服务验证分割部分的一些数据,但如果验证成功,仍然需要对原始消息进行更多处理。
这种配置被认为是一种不好的做法吗?如果是这样,为什么?
答案 0 :(得分:1)
仅当您需要以迭代方式(例如,数组)转换有效负载时,才应使用ForEach介体。 ForEach介体未实现以支持呼叫后端。如果您需要实现此用例,请使用允许您调用后端的Iterate介体。有关详细信息,请参阅https://docs.wso2.com/display/EI611/Iterate+Mediator。