如何使用Mule ESB过滤出站路由?

时间:2010-07-08 15:45:17

标签: java esb mule

我有一个Mule实例,配置为处理来自第三方提供商的xml响应。最近,提供程序已转移到新版本,因此更改了xml响应。现在我需要一种方法来确定响应是否是v1或v2实现,并调用我身边的相应端点来处理响应。

目前我所拥有的是:

<service name="processResponse">
...
    <outbound>
        <pass-through-router>
            <cxf:outbound-endpoint address="..." clientClass="..." wsdlPort="..." wsdlLocation="..." operation="..."/>
        </pass-through-router>
   </outbound>
</service>

我更愿意在mule中添加一个过滤器以识别第三方的修订版(可能通过响应中的xml命名空间),然后调用相应的类。我找不到任何好的例子。

有人可以提供一个如何解决这个问题的例子吗?

2 个答案:

答案 0 :(得分:1)

查看this example,其中演示了一些版本转换。

答案 1 :(得分:0)

我怀疑最直接的方法是使用xpath过滤器的过滤路线。首先为每个版本定义vm服务。接下来,您将通过具有以下出站端点的服务过滤它们。抓住所有人总是一个好主意。

<outbound>
  <filtering-router>
    <vm:outbound-endpoint ref="Version1"/>
    <expression-filter evaluator="jxpath" expression="/your/version1/xpath/descriminator"/>
  </filtering-router>
  <filtering-router>
    <vm:outbound-endpoint ref="Version2"/>
    <expression-filter evaluator="jxpath" expression="/your/version2/xpath/descriminator"/>
  </filtering-router>
  <forwarding-catch-all-strategy>
    <stdio:outbound-endpoint system="ERR"/>
  </forwarding-catch-all-strategy>
</outbound>