社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Redis

带redisqueueinboundgateway的多线程处理

Federico Paparoni • 5 年前 • 628 次点击  

我正在使用与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
 
628 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Artem Bilan
Reply   •   1 楼
Artem Bilan    6 年前

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

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

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

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