我正在配置弹簧集成设置。 有两个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 :(得分: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>
也就是说,你的一个适配器使用“服务器”连接工厂;这将无法按配置工作。您不能将任意消息发送到服务器连接工厂创建的连接;它通常必须是对传入消息的回复;有一些先进的技术,但你总是需要至少一个传入的消息。