以下初始化为套接字spring-integration
在专用端口上。
目标是给应用程序 2 分钟的时间在该端口上运行,否则失败就是不成功。但应用程序启动应该not fail directly该端口在启动时不是空闲的!
@Configuration
@EnableIntegration
public class SocketConfiguration {
@Value("${app.port}")
private String port;
@Bean
public TcpConnectionFactoryFactoryBean tcpFactory() {
CompletableFuture.runAsync(() -> SocketUtils.findAvailableTcpPort(port, port)).get(2, TimeUnit.MINUTES);
}
}
问题:SocketUtils
is @Deprecated
从 Spring 框架 6 开始。
什么是它的正确替代品?
该文档仅声明作为替代方案:
建议您依靠服务器在随机端口上启动的能力,而不是使用 SocketUtils 查找服务器的可用本地端口
好吧,这不是我想要的,我也不能使用 if,因为我历史上绑定到该特定端口!
有一个org.springframework.test.util.TestSocketUtils
反而。但正如加里所说,最好依靠操作系统的选择0
用于端口选项。尽管为什么要在生产代码中选择随机端口......
要获得真正选定的端口,您可以监听TcpConnectionServerListeningEvent
这将为您带来实际价值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)