增加 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;
}
如何在使用线程池时增加线程数 我的代码如下,
@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;
}