spring 是否替换SocketUtils.findAvailableTcpPort()?

bbmckpt7  于 2023-02-15  发布在  Spring
关注(0)|答案(1)|浏览(175)

以下代码初始化为专用端口上的套接字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,因为我在历史上绑定到了那个特定的端口!

mwg9r5ms

mwg9r5ms1#

有一个org.springframework.test.util.TestSocketUtils代替。但正如加里所说,最好依靠操作系统选择通过0的端口选项。虽然为什么要选择一个随机端口在生产代码...
要获得真实的的选定端口,您可以侦听TcpConnectionServerListeningEvent,它将为您带来实际值。

相关问题