如何在Spring Webflux/WebClient中设置事件循环池大小?

Yud*_*rya 11 java spring spring-boot project-reactor spring-webflux

在Vert.X等多反应堆框架中,我们可以设置事件循环线程的数量,例如:

final VertxOptions vertxOptions = new VertxOptions();
vertxOptions.setEventLoopPoolSize(16);
final Vertx myVertx = Vertx.vertx(vertxOptions);
Run Code Online (Sandbox Code Playgroud)

如何在Spring Boot 2 WebFlux/WebClient中进行等效操作?

led*_*iov 12

您有两种选择:

  1. ReactiveWebServerFactory使用应用事件循环资源config的自定义程序覆盖bean:

    @Bean
    public ReactiveWebServerFactory reactiveWebServerFactory() {
        NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory();
        factory.addServerCustomizers(builder -> builder.loopResources(LoopResources.create("my-http", 16, true)));
    
        return factory;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 或者使用-Dreactor.ipc.netty.workerCount=16环境变量.默认情况下,它的值设置为Math.max(availableProcessors(), 4).

  • 我收到 builder.loopResources 未定义。 (4认同)
  • 如何验证设置是否正确应用?有没有一种简单的方法可以打印出workerCount的数量? (2认同)