2012-05-11 47 views
0

我正在配置彈簧集成設置。 有兩個tcp服務器,它的出站通道共享相同的通道我想要兩種方式出站到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" /> 

回答

0

您可以使用一個路由到基於標頭值的通道。

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

也就是說,其中一個適配器使用「服務器」連接工廠;那將不能按照配置工作。您不能將任意消息發送到由服務器連接工廠創建的連接;它通常必須是對傳入消息的回覆;有一些先進的技術可以做到這一點,但您至少需要至少一條傳入消息。

+0

所以,你的意思是我必須將它用於「客戶端」連接工廠。對?謝謝! – verystrongjoe