如何使用 spring 启动在不同端口启动 web containter 和 netty 服务器?

How can I start web containter and netty server in different ports with spring boot?

我想在端口 9061 上创建一个 Web,并在同一个应用程序中在其他端口(例如 1066)上启动一个带有 netty 的套接字服务器,以便从其他系统侦听我需要的一些信息。 我尝试了一些东西,但我将 servlet 端口与 netty 服务器端口绑定,这是我不知道的。

代码如下:

@Component
public class TCPServer {

    @Autowired
    @Qualifier("serverBootstrap")
    private ServerBootstrap serverBootstrap;

    @Autowired
    @Qualifier("tcpSocketAddress")
    private InetSocketAddress tcpPort;

    private Channel serverChannel;

    @PostConstruct
    public void start() throws Exception {
        serverChannel =  serverBootstrap.bind(tcpPort).sync().channel().closeFuture().sync().channel();
    }

    @PreDestroy
    public void stop() throws Exception {
        serverChannel.close();
        serverChannel.parent().close();
    }

    public ServerBootstrap getServerBootstrap() {
        return serverBootstrap;
    }

    public void setServerBootstrap(ServerBootstrap serverBootstrap) {
        this.serverBootstrap = serverBootstrap;
    }

    public InetSocketAddress getTcpPort() {
        return tcpPort;
    }

    public void setTcpPort(InetSocketAddress tcpPort) {
        this.tcpPort = tcpPort;
    }
}

以及配置:

spring:
  application:
    name: MyServer
  main:
    banner-mode: off    

server:
  port: 9061

nettytcp:
  puerto: 1066

我从来没有看到 9061 端口。

这是因为您调用 .closeFuture().sync() 会阻塞,直到 ServerChannel 关闭,它永远不会在这里。我想你只想打电话给 serverBootstrap.bind(tcpPort).sync().channel().