如何在 Spring 集成中实现 TCP 连接池

how to implement a TCP connection pool in Spring Integration

我希望能够实现一个 TCP 连接 pool/factory,它将能够在运行时接受动态主机。

例如,我有一个引用客户端连接工厂的出站通道适配器。主机将需要根据出站通道适配器中的消息进行更改。

我知道主机在这个配置中是静态的。我的问题是,如何为 tcp-connection-factory 自定义或扩展 class 以便能够连接到不断变化的主机。或者,如果有其他更好的方法来实现预期结果,那将是什么解决方案?

<int-ip:tcp-outbound-channel-adapter
    id="outAdapter" 
    channel="outChannel"
    connection-factory="client" />

<int-ip:tcp-connection-factory id="client"
    type="client"
    host="${dynamicHost}"
    port="1234"
    single-use="false"
    so-timeout="10000" />

目前 possible/easy - 我们有 open new feature request in JIRA 来提供该功能。

问题是当适配器调用其 getConnection() 方法时,连接工厂当前无法访问该消息。因此我们需要一些 API 更改以正确支持此功能。

与此同时,您可以编写自己的委托连接工厂,但这并不简单,您需要使用 ThreadLocal 或类似的方法将消息上下文传达给工厂,以便它可以决定哪个需要连接。