recipient-list-router Spring集成

时间:2015-10-06 07:51:19

标签: java spring spring-integration

我是春季整合的新手。 在我的弹簧集成配置中,我有:

  <int:chain input-channel="channel1_2" output-channel="channel1_3">
    <int:service-activator>
        <bean class="com.csv.CSVEntreprise"/>
    </int:service-activator>
</int:chain>

<int:channel id="channel1_3"/>

<int:recipient-list-router id="id-entreprise" input-channel="channel1_3">
    <int:recipient channel="channel1_3TRUE" />
    <int:recipient channel="channel1_3FALSE"/>
</int:recipient-list-router>

<int:channel id="channel1_3TRUE"/>
<int:channel id="channel1_3FALSE"/>

在CSVEntreprise类中我使用布尔返回定义方法,我希望当它返回true时使用通道channel1_3TRUE,当它返回false时使用通道channel1_3FALSE?

1 个答案:

答案 0 :(得分:2)

您可能需要考虑使用标头值路由器(http://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html)。

使用CSVEnterprise bean在MessageHeaders中设置布尔值。

您的@ServiceActivator应设置标题的值:

return MessageBuilder.withPayload(message)
                    .setHeader("MY_HEADER", Boolean.FALSE).copyHeadersIfAbsent(headers).build();

然后,使用标头值路由器确定路由订单的通道。

<int:header-value-router input-channel="channel1_3" header-name="MY_HEADER" id="headerValueRouter">
    <int:mapping value="true" channel="channel1_3TRUE"/>
    <int:mapping value="false" channel="channel1_3FALSE" />
</int:header-value-router>