骡子 - 如何聚合foreach的结果并返回结果?

时间:2013-11-21 16:40:58

标签: collections foreach mule aggregator

我是骡子的新手,这就是我想做的事情。 1)呼叫出站休息服务A. 2)循环结果并呼叫休息服务B. 3)来自服务B的聚合结果并返回有效载荷。 这是我提出的,但是这个流程返回服务A的结果。如何忽略A的结果并从B返回聚合结果?我在for循环中添加了logger,可以看到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>  

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

Mule中的foreach就像一个循环,就像一个分离器和聚合器一样。

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

  1. 在http
  2. out http A
  3. 分离器
  4. out http B
  5. 聚合
  6. 查看here有关拆分器和聚合器的示例。

    此致

答案 1 :(得分:0)

我试图做一些非常相似的事情,最后我使用了一个集合分割器,集合 - 聚合器组合。在此查看详细信息:In Mule how do you repeatedly call a webservice and return an aggregate of the result?