如何在 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
或类似的方法将消息上下文传达给工厂,以便它可以决定哪个需要连接。
我希望能够实现一个 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
或类似的方法将消息上下文传达给工厂,以便它可以决定哪个需要连接。