Spring Integration xpath-router支持将多个值映射到一个通道,而不列出所有映射值

时间:2014-06-06 16:12:42

标签: spring integration

我们有一个Web服务响应,它给我们一个结果属性,其值范围是0到100.' 0' 0成功。 1到50表示警告。 51到100表示​​错误。

我们必须根据结果代码将响应路由到三个不同的通道。

现在,我的映射配置如下所示。

                   

    <!-- Warnings -->
<int-xml:mapping value="1" channel="createContactWarningChannel" />
<int-xml:mapping value="2" channel="createContactWarningChannel" />
...
<int-xml:mapping value="50" channel="createContactWarningChannel" />

    <!-- Errors -->
<int-xml:mapping value="51" channel="createContactErrorChannel" />
<int-xml:mapping value="52" channel="createContactErrorChannel" />
...
<int-xml:mapping value="100" channel="createContactErrorChannel" />

是否有任何干净的方法将响应(错误和警告)路由到相应的通道而不列出所有这些映射?

1 个答案:

答案 0 :(得分:2)

Spring Integration路由器不支持conditional映射 - 仅value equals match。无论您从Generic Router + SpEL获得技巧,SpEL表达式都将评估为所需的通道名称:

<int:router input-channel="routeChannel" default-output-channel="createContactChannel"
   expression="#xpath(payload, '//status') gt 0 and #xpath(payload, '//status') lt 51 ? 'createContactWarningChannel' : 'createContactErrorChannel'"/>