以下代码初始化为专用端口上的套接字spring-integration
。
目标是给予应用程序2分钟的时间在该端口上运行,否则失败是不成功的。但是应用程序启动应该 * 不 * 失败 * 直接 * 该端口在启动时不空闲!
@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);
}
}
问题:自Spring Framework 6以来,SocketUtils
是@Deprecated
。什么是它的适当替代品?
文件仅声明作为替代方案:
建议您依靠服务器在随机端口上启动的能力,而不是使用SocketUtils来查找服务器的可用本地端口
嗯,这不是我想要的,我也不能使用if,因为我在历史上绑定到了那个特定的端口!
1条答案
按热度按时间mwg9r5ms1#
有一个
org.springframework.test.util.TestSocketUtils
代替。但正如加里所说,最好依靠操作系统选择通过0
的端口选项。虽然为什么要选择一个随机端口在生产代码...要获得真实的的选定端口,您可以侦听
TcpConnectionServerListeningEvent
,它将为您带来实际值。