我有一个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命名空间),然后调用相应的类。我找不到任何好的例子。
有人可以提供一个如何解决这个问题的例子吗?
答案 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>