Spring integration 根据条件路由到不同的通道

Spring integration 根据条件路由到不同的通道,spring-integration,Spring Integration,我想根据属性的条件将消息路由到不同的通道。 假设我有分数属性。如果分数我们对这件事有一个明确的答案,但还没有找到解决办法 现在,您可以通过表达式中的条件实现此行为,并提供真和假的映射,以及路由器的cascad: <si:router id="serviceRouter" input-channel="serviceRoutingChannel" expression="payload.score == 100"> <si:mapping value="true"

我想根据属性的条件将消息路由到不同的通道。 假设我有分数属性。如果分数我们对这件事有一个明确的答案,但还没有找到解决办法

现在,您可以通过
表达式
中的条件实现此行为,并提供
的映射,以及路由器的cascad:

<si:router id="serviceRouter" input-channel="serviceRoutingChannel"
    expression="payload.score == 100">
    <si:mapping value="true" channel="perfectChannel" />
    <si:mapping value="false" channel="nestedRouterChannel" />
</si:router>

<si:router input-channel="nestedRouterChannel"
    expression="payload.score lt 100">
    <si:mapping value="true" channel="normalChannel" />
    <si:mapping value="false" channel="badChannel" />
</si:router>

更新

另一个使用
的选项:


非常感谢。我喜欢这个选择
<si:router id="serviceRouter" input-channel="serviceRoutingChannel"
    expression="payload.score == 100">
    <si:mapping value="true" channel="perfectChannel" />
    <si:mapping value="false" channel="nestedRouterChannel" />
</si:router>

<si:router input-channel="nestedRouterChannel"
    expression="payload.score lt 100">
    <si:mapping value="true" channel="normalChannel" />
    <si:mapping value="false" channel="badChannel" />
</si:router>
<recipient-list-router id="serviceRouter" input-channel="serviceRoutingChannel">
    <recipient selector-expression="payload.score == 100" channel="perfectchannel"/>
    <recipient selector-expression="payload.score lt 100" channel="normalchannel"/>
    <recipient selector-expression="payload.score gt 100" channel="badchannel"/>
</recipient-list-router>