【发布时间】:2019-04-23 01:16:32
【问题描述】:
我正在使用 Spring 与 Redis 的集成。生产者使用 RedisQueueOutboundGateway,而接收者使用 RedisQueueInboundGateway 定义流。
从文档中读到下面这句话
task-executor 必须配置多个线程进行处理
我需要并发执行,以加快请求的详细说明,但我可以看到即使我配置了一个自定义 ThreadPoolTaskExecutor 如下所示,总是有一个线程
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(40);
executor.setQueueCapacity(40);
executor.setThreadNamePrefix("QueueAsyncExecutor-");
executor.initialize();
return executor;
}
而这个线程池的使用是
final RedisQueueInboundGateway rqig = new RedisQueueInboundGateway(finalDestination, jedisConnectionFactory);
rqig.setTaskExecutor(getAsyncExecutor());
最终结果是对请求的顺序处理,所有这些都使用同一个线程完成,正如我从日志中看到的那样。在这种情况下是否可以启用多线程处理?怎么样?
【问题讨论】:
标签: spring multithreading redis spring-integration