Spring集成TCP,强制重连

标签 spring tcp spring-integration reconnect

我有以下 spring 集成 TCP 连接:

<int-ip:tcp-connection-factory id="client" type="client" host="..." port="..." single-use="true" so-timeout="10000"/>

我希望能够在发生协议(protocol)级问题时强制重新连接。那可以吗?怎么办?

最佳答案

鉴于您有 single-use设置为 true ,每个请求只使用一次套接字,因此“重新连接失败”没有意义,因为无论如何都会为每个请求建立一个新连接。

single-use="false" (共享连接),如果您使用带有 <int-ip:output-channel-adapter/> 的工厂你可以设置client-mode为真;这将在超时后自动重新连接(并且您可以通过在适配器上调用 retryConnection() 显式地重新建立共享连接。但是,出站网关当前不支持 client-mode。请参阅 TCP Adapters 并使用您的浏览器来查找“客户端模式”以获取更多信息。

也就是说,使用 single-use="false" , 你可以简单地调用 getConnection()在客户端工厂上,它将重新建立共享连接(但你不能对连接做任何事情)。此外,不要使用 single-use="true" 执行此操作但是,因为它会导致内存泄漏(除非您 close() 连接 - 这没有任何意义 - 获取连接只是为了关闭它)。

关于Spring集成TCP,强制重连,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15659757/

相关文章:

java - Spring集成在运行时添加路由

http - spring 集成入站网关 http 请求 header

查询方法中的Spring Data可选参数

java - 如何保证一个bean只被Spring实例化一次

java - 是否可以在全双工 TCP 通信中使用 Netty?

tcp - VPN 隧道中没有 SYN+ACK 响应

http - DNS发生在协议(protocol)栈的哪一层?

error-handling - Spring 集成错误处理 - 如何访问原始错误消息的历史记录?

java - Spring MVC 和静态加密

spring - 如何模拟 Spring WebFlux WebClient?