如何在Spring Integration中实现TCP连接池

时间:2015-04-21 09:23:55

标签: spring-integration

我希望能够实现一个能够在运行时接受动态主机的TCP连接池/工厂。

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

我知道主机在此配置中是静态的。我的问题是,如何定制或扩展tcp-connection-factory的类,以便能够连接到更改的主机。或者,如果还有其他更好的方法来实现预期结果,那么该解决方案会是什么?

<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" />

1 个答案:

答案 0 :(得分:0)

目前无法/轻松 - 我们有open new feature request in JIRA来提供该功能。

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

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