我有许多Web服务,每个都返回一个用户ID列表,如下所示:
<application name="abc">
<users>
<id>123</id>
<id>456</id>
<id>789</id>
</users>
</application>
我需要能够
<response>
<id>123</id>
<application name="abc">
found
</application>
<application name="lmn">
not found
</application>
<application name="xyz">
found
</application>
</response>
它可能是服务链和聚合的混合,但我无法弄清楚如何做到这一点。我尝试克隆一个请求,并在最后使用send接收序列,该序列使用有效负载工厂转换正文。在Out序列中,我然后使用aggregate来组合新消息。然而它超时了,我不认为这是时间问题。我的主要问题是如何从每个Web服务响应创建一条新消息,聚合中介可以将它们组合起来。
感谢任何帮助。
由于
答案 0 :(得分:1)
你需要遵循这种模式,https://docs.wso2.com/display/IntegrationPatterns/Scatter-Gather,你几乎就在那里。当您定义接收序列时,响应将被转发到该序列,您将无法在outSequence中获得响应消息。在outSequence中使用聚合器介体并组合响应,而不是定义接收序列。
汇总回复后,您可以使用xslt介体转换消息。
答案 1 :(得分:0)
我设法通过为每个Web服务创建代理服务来解决我的问题。每个代理服务调用实际的Web服务,并使用out序列中的过滤器来创建响应,如下所示:
<application name="abc">
found
</application>
然后我创建了一个REST API,它将idno作为URI模板。然后我用这个idno准备一个有效载荷,并将请求克隆到我上面提到的代理服务。然后我聚合响应并在有效负载中添加idno。
如果有人有任何问题请告诉我。