Mule - 路由取决于 json 负载

Mule - route depending on json payload

我是 运行 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 组件,它可以将流变量设置为仓库字段的值,但也许有更简单的方法来解决这个问题? 我查看了 MEL 和表达式转换器,但无法弄清楚。

此致

您可以将选择路由器放在 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>

希望对您有所帮助。