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>