Py学习  »  Redis

带redisqueueinboundgateway的多线程处理

Federico Paparoni • 4 年前 • 481 次点击  

我正在使用与Redis的Spring集成。生产者使用redisqueueoutboundgateway,而在另一端,接收器具有用redisqueueinboundgateway定义的流。

从文件中我发现了以下句子

必须为任务执行器配置多个线程才能进行处理

我需要并发执行,以便加快请求的处理速度,但我可以看到始终有一个线程,即使我配置了如下自定义线程池任务执行器

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());

最后的结果是对请求进行顺序处理,所有这些处理都使用我从日志中看到的同一线程完成。在这种情况下,是否可以启用多线程处理?怎么用?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37900
 
481 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Artem Bilan
Reply   •   1 楼
Artem Bilan    5 年前

没错。这个 RedisQueueInboundGateway 现在是单线程的。只有一个 ListenerTask :

private void restart() {
    this.taskExecutor.execute(new ListenerTask());
}

听起来我们需要介绍一下 concurrency 选择权 在开发网关中重新查询 !请随时就此事提出圣战,欢迎作出贡献!

您可以通过几个 在开发网关中重新查询 相同redis队列的实例。这样他们每个人都将开始自己的 ListEnter任务 .