我想提出两种出站到tcp客户端的方法

时间:2012-05-11 07:08:58

标签: routes spring-integration

我正在配置弹簧集成设置。 有两个tcp服务器,它的出站通道共享相同的通道

我希望使用标头的值路由频道。 我怎么解决这个问题?请帮帮我。

<ip:tcp-connection-factory id="admMsgRcvServer"
    type="server" port="#{afiProperties.admMsgRcvPort}" deserializer="byteArrayCharLengthSerializer"
    serializer="byteArrayCharLengthSerializer" single-use="true" />

<ip:tcp-connection-factory id="simMsgSndClient"
    type="client" host="#{afiProperties.msgSndHost}" port="#{afiProperties.msgSndPort}"
    single-use="true" so-timeout="10000" deserializer="byteArrayCharLengthSerializer"
    serializer="byteArrayCharLengthSerializer" />

<ip:tcp-outbound-channel-adapter id="msgSnd" 
    connection-factory="simMsgRcvServer" channel="afiHeadToHeaderChannel"  />   

<ip:tcp-outbound-channel-adapter id="simMsgSnd"
    channel="afiHeadToHeaderChannel" connection-factory="simMsgSndClient" />

1 个答案:

答案 0 :(得分:0)

您可以使用an根据标头的值路由到频道。

<int:header-value-router header-name="foo">
    <int:mapping value="fooValue1" channel="channel1"/>
    <int:mapping value="fooValue2" channel="channel2"/>
</int:header-value-router>

也就是说,你的一个适配器使用“服务器”连接工厂;这将无法按配置工作。您不能将任意消息发送到服务器连接工厂创建的连接;它通常必须是对传入消息的回复;有一些先进的技术,但你总是需要至少一个传入的消息。