2

我是 Mule 的新手,这就是我想要做的。1) 调用出站休息服务 A 2) 循环遍历结果并调用休息服务 B 3) 汇总来自服务 B 的结果并返回有效负载。这是我想出的,但这个流程是从服务 A 返回结果。如何忽略来自 A 的结果并从 B 返回聚合结果?我在 for 循环中添加了记录器,可以看到 B 的响应,但不确定如何将结果返回给用户?我需要自定义聚合器吗?

<flow name="test1Flow1" doc:name="test1Flow1">   

    <http:inbound-endpoint exchange-pattern="request-response" doc:name="HTTP1" address="http://localhost:8082"/>
        <copy-properties propertyName="*" doc:name="Property"/>
        <http:outbound-endpoint doc:name="HTTP2" followRedirects="true" address="http://abcd/catalog/#[message.inboundProperties['http.relative.path']]?#[message.inboundProperties['http.query.string']]" contentType="text/xml"/>

    <foreach doc:name="For Each" collection="#[xpath('//mc:assets/mc:asset')]">

    <http:outbound-endpoint doc:name="HTTP3" address="http://abcd#[xpath:@href]" contentType="text/xml" method="GET"/>
    <collection-aggregator failOnTimeout="true" doc:name="Collection Aggregator"/>        
    </foreach>

</flow>  

感谢任何帮助!

4

2 回答 2

0

Mule 中的 foreach 像一个循环一样工作,同时又像一个拆分器和聚合器。

我相信您将能够通过以下方式实现您的用例:

  1. 在 http
  2. 出http A
  3. 分离器
  4. 出http B
  5. 聚合器

这里查看拆分器和聚合器的示例。

问候

于 2013-12-15T11:18:03.080 回答
0

我试图做一些非常相似的事情,最终我使用了集合拆分器、集合聚合器组合。详情请看这里:在 Mule 中,您如何重复调用 Web 服务并返回结果的聚合?

于 2014-01-09T18:23:27.523 回答