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 == "a"]">
<custom-transformer ../>
</when>
<when expression="#[payload.Warehouse == "b"]">
<custom-transformer ../>
</when>
</choice>
希望对您有所帮助。
我是 运行 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 == "a"]">
<custom-transformer ../>
</when>
<when expression="#[payload.Warehouse == "b"]">
<custom-transformer ../>
</when>
</choice>
希望对您有所帮助。