【问题标题】:How to aggregate data from two different sources in Mule ESB如何在 Mule ESB 中聚合来自两个不同来源的数据
【发布时间】:2016-03-20 00:37:14
【问题描述】:

我正在尝试从 mule 中的两个表中聚合数据。我正在使用 Scatter-Gather 流控制来实现这一点。我能够在调试器中看到数据,但不确定如何将其组合成单一格式

payload[0]= [[{"gender":"M","dob":"1974-11-23",
               "last_name":"Harding","first_name":"Ezekiel"}],
payload[1]= [{"role":"Sr. Developer"}]]

我要创建的是

payload = [[{"gender":"M","dob":"1974-11-23",
             "last_name":"Harding","first_name":"Ezekiel",
             "role":"Sr. Developer}]

【问题讨论】:

    标签: mule


    【解决方案1】:

    如果理解正确,有一个转换器可以完全满足您的需求。它是:

    <combine-collections-transformer />
    

    【讨论】:

    • 如果问题中的有效载荷都是 HashMap,这可能会起作用。但是,如果有效负载是 List,那么结果将只是一个包含两个 Map 的列表。也许添加另一个 combine-collections-transformer 会解决这个问题。 :)
    【解决方案2】:

    payload[0] 和payload[1] 都是Hashmaps。您可以使用 putAll 将一个附加到另一个

    <expression-component doc:name="Expression"><![CDATA[payload[0].putAll(payload[1]);payload=payload[0]]]></expression-component>
    

    结果将是:

    {last_name=Harding, role=Sr. Developer, gender=M, first_name=Ezekiel, dob=1974-11-23}
    

    【讨论】:

      【解决方案3】:

      使用 CustomAggregationStratergy 将是一种干净的方法。

      http://www.mulesoft.org/documentation/display/current/Scatter-Gather

      【讨论】:

        【解决方案4】:

        在scatter gather之后获取组合payload不会有问题...

        如果您使用#[message.payload],您将获得组合的有效负载,如果您想将两个有效负载组合在一行中,您可以使用表达式和

        如果您使用#[message.payload[0]]#[message.payload[1]],您将分别获得两个表的有效负载

        编辑:-

        这样做怎么样:- &lt;expression-transformer doc:name="Expression" expression="#[expression=payload[0].toString()+',' + payload[1].toString()]"/&gt;

        【讨论】:

        • 如果我使用 #[message.payload] 我不会得到组合的有效负载。我得到 2 个 JSON 对象的逗号分隔列表,如下所示 [[{"gender":"M","dob":"1974-11-23","last_name":"Harding","first_name":"Ezekiel"} ],[{"role":"Sr. Developer"}]] 我想要的是与我的有效负载合并的“角色”元素[0]
        • 使用表达式组件来获得你想要的格式
        • 您可以根据自己的需要尝试不同的表达方式
        猜你喜欢
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2021-04-11
        • 1970-01-01
        • 2018-12-04
        相关资源
        最近更新 更多