我希望能够实现一个能够在运行时接受动态主机的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" />
答案 0 :(得分:0)
目前无法/轻松 - 我们有open new feature request in JIRA来提供该功能。
问题是,当适配器调用其getConnection()
方法时,连接工厂当前无权访问该消息。因此,我们需要一些API更改才能正确支持此功能。
与此同时,您可以编写自己的委托连接工厂,但这不会是微不足道的,您需要使用ThreadLocal
或类似的方式将消息上下文传达给工厂,以便它可以决定哪个连接是需要的。