SpringBoot-Webflux-Netty(四)


SpringBoot Netty 配置

配置啟動端口

@Component
public class NettyWebServerFactoryPortCustomizer
      implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {
   @Override
   public void customize(NettyReactiveWebServerFactory serverFactory) {
      serverFactory.setPort(8089);
   }
}

配置 EventLoopGroup

EventLoopNettyCustomizer 配置類

public class EventLoopNettyCustomizer implements NettyServerCustomizer {

    @Override
    public HttpServer apply(HttpServer httpServer) {
        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workGroup = new NioEventLoopGroup();
        return httpServer.tcpConfiguration(tcpServer -> tcpServer
                .bootstrap(serverBootstrap -> serverBootstrap
                        .group(bossGroup, workGroup)
                        .handler(new LoggingHandler(LogLevel.DEBUG))
                        .option(ChannelOption.SO_BACKLOG, 128)
                        .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
                        .channel(NioServerSocketChannel.class)));
    }
}

NettyReactiveWebServerFactory 工廠類

@Bean
public NettyReactiveWebServerFactory nettyReactiveWebServerFactory() {
   NettyReactiveWebServerFactory webServerFactory = new NettyReactiveWebServerFactory();
   // 同時可以擴展 SSL
   webServerFactory.addServerCustomizers(new EventLoopNettyCustomizer());
   return webServerFactory;
}

查看日志

要啟用Netty訪問日志記錄,實用配置參數-Dreactor.netty.http.server.accessLogEnabled = true

新建兩個 SpringBoot 項目

使用 Flux 寫法

@GetMapping("flux")
public Mono<String> reactor() {
   return Mono.just("hello world");
}

使用 Mvc 寫法

@GetMapping("mvc")
public String hello() {
   return "hello world";
}

壓測看結果

Flux 截圖

image-20210109130724515

Mvc 截圖

image-20210109130900111

網關代理

直接代理(默認參數)

image-20210109134614688

自定義 EvenLoopGroup

image-20210109132310751

修改參數

image-20210109132654663

參考鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM