[英]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.