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

Java 如何使用Mule ESB过滤出站路由?,java,esb,mule,Java,Esb,Mule,我有一个Mule实例,它被配置为处理来自第三方提供者的xml响应。最近,提供程序已移动到一个新版本,因此更改了xml响应。现在我需要一种方法来确定响应是v1还是v2实现,并调用我这边的相应端点来处理响应 我目前拥有的是: <service name="processResponse"> ... <outbound> <pass-through-router> <cxf:outbound-endpoint a

我有一个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名称空间),然后调用适当的类。我找不到这方面的好例子


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

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

我认为最直接的方法是使用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>