我们有一个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" />
是否有任何干净的方法将响应(错误和警告)路由到相应的通道而不列出所有这些映射?
答案 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'"/>