Spring Integration TCP客户端上的多个套接字到一个服务器地址

时间:2018-11-27 16:45:16

标签: spring tcp spring-integration

必备条件:

  • 我应该打开到同一服务器IP的多个套接字/连接,并且 港口。
  • 我应该检测到请求来自哪个连接,
    将响应重新路由到同一连接
  • 连接表示为服务器Ip和端口+客户端Ip, 端口
  • 每个连接必须为单次使用= false,预计会有多个请求/回复

我正在将TcpReceivingChannelAdapter和TcpSendingMessageHandler与TcpNetClientConnectionFactory配合使用。

还有IntegrationFlow用于动态生成这些连接。


如何为TcpNetClientConnectionFactory创建多个都指向同一主机和端口的套接字?

我知道如何使用新的TcpNetClientConnectionFactory(主机,端口)设置目标。但是我看不到或找不到如何影响使用哪个端口的

是否应该通过将多个TcpNetClientConnectionFactory分别绑定到一个入站和出站TCP适配器来完成?

如何为这些连接设置本地端口?或至少如何获得它?

我似乎没有找到关于此选项的任何证明。最相似的是This question

1 个答案:

答案 0 :(得分:0)

您每个都需要一个单独的连接工厂/适配器。

请参见TCP Connection Events

使用Calendar.aggregate([ { "$match": { "$and": [ { "date": { "$lte": new Date(2018, 0, 7), "$gte": new Date(2018, 10, 15) }}, { "date": { "$not": { "$lte": new Date(2018, 0, 7), "$gte": new Date(2018, 10, 15) }}} ] }} ]) ApplicationListener接收@EventListener

该事件具有TcpConnectionEvent,其中既包含本地端口,也包含远程端口;该事件还具有连接工厂Bean名称。

或者您可以将getConnectionId()强制转换为getSource()并调用TcpConnection(但是您不应该与getPort()对象进行交互。