Redis-queue队列,多队列消费问题

13280048428

目前有一个使用场景,主要收集数据和更新数据,处理过程较长。
拟根据某些参数拆分成不同的对列,比如clr_1, clr_2, ... clr_n,使用同一个消费者进行处理。
不知道如何设置,使消费者可以匹配符合某命名规则的不同队列。
有做过相似业务的大佬吗?能否帮忙解惑?

729 2 0
2个回答

xiuwang
  • 13280048428 2022-09-29

    多谢,刚刚没有找到这个,我研究一下。

  • 13280048428 2022-09-29

    我觉得你可能误会了我的需求。
    文档里消费者的队列名是定死的,我需要给消费者匹配多个队列名(一般是场景+id)
    比如现在消费者正在处理clr_1的数据,其他clr_1的对列会等待 ——但clr_7的队列不会等clr_1执行完毕

  • xiuwang 2022-09-29

    感觉就是手册里说的那样啊,clr_1单独放到一组进程里消费,clr_7在另外一组进程里消费,clr_7的队列不会等clr_1执行完毕

  • 13280048428 2022-09-29

    但如果注册了新的用户 9 ,copy一个clr_9的消费者出来,然后重启服务

  • xiuwang 2022-09-29

    clr_后面代表用户id?好吧,没想到是按用户id来做队列的

  • 13280048428 2022-09-29

    全都是慢查询,如果没办法并行处理的话,瓶颈太明显了。总有几十几百个在等待消费

  • nitron 2022-09-29

    既然是同样的消费者,为何不把你这个参数放入任务体,由消费者根据参数做对应处理,单队列多个消费进程,SPMC模式

  • 13280048428 2022-09-29

    同队列的话,会等待吧? @nitron

  • nitron 2022-09-29

    消费进程数(count)开高一点,消费进程都在处理的时候,肯定要等待

  • 13280048428 2022-09-29

    但很可能接连几个都是clr_1啊,这种情况必须等待

  • nitron 2022-09-29

    多个clr_1还必须要按先进先出的顺序一个个处理么?

  • 13280048428 2022-09-29

    当然,前一个还在更新,后边进来也要等待解锁

  • nitron 2022-09-29

    如果后一个执行依赖前一个的结果,队列帮不上什么大忙,你这种N个队列去执行的也不靠谱,长耗时任务并行执行的上限约等于CPU核心数,不清楚你的具体业务,没什么好建议

tingfeng

兄弟,最后怎么处理的?可以分享下吗

  • 暂无评论
🔝