拆分 - 转换 - 聚合

时间:2015-12-25 12:16:24

标签: mule

我试图使用twitter连接器编写测试应用程序。 下一步是:

  1. 加载转发;
  2. 我在这里获得转发列表,我想逐个转换它们。我使用 for-each ,但之前我使用收集拆分器
  3. 我的理解,在foreach区域外我应该已经转换了有效载荷,但是在这个地方我得到了与开头相同的结果。
  4. 这是我的流程:

    <flow name="twits">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/twits" doc:name="HTTP"/>
        <twitter:get-retweets statusId="111111111111" config-ref="Twitter" doc:name="Twitter"/>
        <foreach>
            <transformer ref="ReTwitTransformer"/>
        </foreach>
        <json:object-to-json-transformer doc:name="Object to JSON"/>
    </flow>
    

    所以问题是在3步,我无法将转换后的数据设置为消息有效负载。我已经尝试过使用 set-payload ,但没有成功。

1 个答案:

答案 0 :(得分:1)

Foreach scope在处理完每个元素后返回原始消息。您的转换将不会被保留。

在这种情况下,您可以尝试使用Batch Processing模块(EE),或者只是像之前尝试的那样使用Collection Splitter(CE)。

另外,我注意到你正在使用HTTP侦听器来启动它。如果您确实需要将转换后的转发集合作为HTTP响应返回,则需要添加更多内容:

如果使用批处理模块,则需要将其与Request Reply路由器配对,以便同步恢复成功记录的集合。只需为请求放置Batch Execute,为回复放置VM入站端点。然后只需在完成批处理步骤中放置VM出站端点。

如果您使用Collection Splitter,转换发生后您需要Collection Aggregator。您可能要等到聚合后才能执行object-to-json-transformer。