0

我正在配置 Spring 集成设置。有两个 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" />
4

1 回答 1

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>

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

于 2012-05-11T11:50:28.567 回答