增加 Spring 反应堆 AsyncTaskExecutor 中的线程数

increase thread count in Spring reactor AsyncTaskExecutor

如何在使用线程池时增加线程数 我的代码如下,

@SpringBootApplication
@EnableReactor
public class Application implements CommandLineRunner {
    @Autowired
    private Reactor reactor

    @Bean
    Reactor createReactor(Environment env) {
    return Reactors.reactor()
            .env(env)
            .dispatcher(Environment.THREAD_POOL)
            .get();
    }

添加以下代码并没有增加线程数,线程数默认固定为机器上的内核数。

@Bean
public AsyncTaskExecutor workQueueAsyncTaskExecutor(Environment env) {
    return new WorkQueueAsyncTaskExecutor(env)
        .setName("workQueueExecutor")
        .setBacklog(2048)
        .setThreads(20)
        .setWaitStrategy(new YieldingWaitStrategy());
}

如何设置反应堆变量的线程数?

如果我删除 createReactor bean,反应堆工作正常,只是默认是 RingBuffer 单线程。使用该 bean 和 THREAD_POOL 的规范,将启动与机器上的核心数相等的线程。 我只是想看看如何手动增加该计数...

谢谢

@jbrisbin 在 gitter 上回答了这个问题,https://gitter.im/reactor/reactor?at=5548f40f52bceea22c3814e0

为了方便,答案是为dispatcher创建一个bean,从reactor创建bean中引用

@Bean
Reactor createReactor(Environment env) {
    Reactor r = Reactors.reactor().env(env).dispatcher(createDispatcher()).get();
    return r;
}

@Bean
Dispatcher createDispatcher() {
    Dispatcher d = new WorkQueueDispatcher("multThreadedQueueDispatcher", 20, 2048, null);
    return d;
}