繁体   English   中英

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

[英]How to filter outbound routing using Mule ESB?

我有一个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>

我希望在m子中添加一个过滤器以标识第三方的版本(也许通过响应中的xml名称空间),然后调用适当的类。 我找不到任何好的例子。

有人可以举例说明如何解决吗?

看一下这个示例 ,其中演示了一些版本转换。

我怀疑最直接的方法是使用xpath过滤器过滤路由。 首先为每个版本定义虚拟机服务。 接下来,您将通过具有以下出站端点的服务来过滤它们。 一劳永逸总是一个好主意。

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM