【问题标题】:Mule - route depending on json payloadMule - 路由取决于 json 有效负载
【发布时间】:2016-09-04 18:50:43
【问题描述】:

我正在运行 Mule CE 3.8,需要根据 JSON 有效负载中的值路由我的消息。 我从通过 JSON2ObjectList 和集合拆分器运行的 REST 端点获取 JSON 列表。

    <http:request ... /> 
    <json:json-to-object-transformer returnClass="java.util.List" encoding="UTF-8" doc:name="JSON2ObjectList"/>
    <collection-splitter doc:name="Collection Splitter"/>
    <custom-transformer ../>

现在在 CustomTransformer 和所有映射之前,我需要一个选择路由器,根据负载 Product.Warehouse 值分隔消息。我正在考虑一个 Java 组件,它可以将流变量设置为 Warehouse 字段的值,但也许有更简单的方法来解决这个问题? 我查看了 MEL 和表达式转换器,但无法弄清楚。

问候

【问题讨论】:

    标签: mule anypoint-studio


    【解决方案1】:

    您可以将选择路由器放在 CustomTransformer 之前并检查 payload.warehouse。作为集合拆分器将生成您的产品对象。您可以直接访问其属性。

    类似

        <json:json-to-object-transformer returnClass="java.util.List" encoding="UTF-8" doc:name="JSON2ObjectList"/>
        <collection-splitter doc:name="Collection Splitter"/>
        <choice doc:name="Choice">
            <when expression="#[payload.Warehouse == &quot;a&quot;]">
                <custom-transformer ../>
            </when>
            <when expression="#[payload.Warehouse == &quot;b&quot;]">
                <custom-transformer ../>
            </when>
        </choice>
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答,我想这将在我获得正确的 MEL 表达式后解决问题(现在它给了我一个 java Nullpointer 异常,告诉我有效负载是一个 java.util.LinkedHashMap 来自集合拆分器)
    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多