You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SpringBoot应用中让Netty监听多个端口?

解决Spring Boot Netty应用监听多端口的问题

你的代码问题在于:Reactor Netty的HttpServer.port()方法是替换当前端口配置,而非添加新端口。你添加的三个PortCustomizer会依次执行,每次调用port()都会覆盖之前的端口设置,最终只有最后一个端口(8084)生效。

正确实现方式

通过bindAddress()方法一次性绑定多个端口,让Netty同时监听所有指定端口:

@Component
public class NettyWebServerFactoryPortCustomizer 
  implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {

    @Override
    public void customize(NettyReactiveWebServerFactory serverFactory) {
        serverFactory.addServerCustomizers(new MultiPortCustomizer());
    }
    
    private static class MultiPortCustomizer implements NettyServerCustomizer {
    
        @Override
        public HttpServer apply(HttpServer httpServer) {
            // 定义需要监听的所有端口
            List<InetSocketAddress> listenAddresses = Arrays.asList(
                new InetSocketAddress(8080),
                new InetSocketAddress(8082),
                new InetSocketAddress(8084)
            );
            
            // 使用bindAddress绑定多个地址
            return httpServer.bindAddress(() -> listenAddresses.stream());
        }
    }
}

原理说明

bindAddress(Supplier<Stream<InetSocketAddress>>)方法允许传入多个Socket地址,Reactor Netty会为每个地址创建独立的监听通道,从而实现同时监听多个端口的效果。

验证方式

启动应用后,可通过curl或浏览器分别访问http://localhost:8080、http://localhost:8082、http://localhost:8084,确认三个端口均能正常响应请求。

内容的提问来源于stack exchange,提问作者Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:16:56