Spring集成。未知主机和tcp-connection-factory

时间:2014-01-29 13:45:43

标签: spring tcp lazy-evaluation host spring-integration

我正在使用Spring Integration实现TCP客户端。 要求是:  1.通过UDP连接(从某处)接收TCP服务器的ip或主机地址。  2.打开与服务器的TCP连接,从上一步骤到目标主机,并将一些业务数据发送到此服务器。

我使用Spring Integration框架,版本" 2.2.0.RELEASE",问题是在 tcp-connection-factory 的默认配置 host 属性应为"硬编码"在xml中。例如:

<ip:tcp-connection-factory id="client" type="client" host="localhost" port="1234" single-use="true"/>

问题是如何在应用程序上下文中避免目标主机的静态定义,并且能够“懒惰”&#39;在目标主机已知时初始化tcp-connection-factory。

我知道这个流程可以通过Java的标准网络API轻松实现,问题是关于Spring-Integration API的具体问题

3 个答案:

答案 0 :(得分:0)

目前,配置是静态的。

然而,您可以使用与dynamic ftp sample中使用的技术类似的技术,该技术在运行时配置ftp出站适配器。

答案 1 :(得分:0)

至于<int-ip:tcp-connection-factory>提供AbstractConnectionFactory的某些实例。从另一方<int-ip:tcp-outbound-channel-adapter>通过connection-factory应用该实例,因此,您无法停止实施自己的RoutingConnectionFactory

实施可能依赖ThreadLocal的某些值。这个想法在这里:

https://github.com/spring-projects/spring-amqp/blob/master/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/AbstractRoutingConnectionFactory.java

https://github.com/spring-projects/spring-framework/blob/master/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/lookup/AbstractRoutingDataSource.java

答案 2 :(得分:0)

它目前不可能/容易 - 即使您为tcp-connection-factory定制或扩展类以便能够连接到更改的主机。有一个open new feature request in JIRA来提供此功能。