目前有一个使用场景,主要收集数据和更新数据,处理过程较长。 拟根据某些参数拆分成不同的对列,比如clr_1, clr_2, ... clr_n,使用同一个消费者进行处理。 不知道如何设置,使消费者可以匹配符合某命名规则的不同队列。 有做过相似业务的大佬吗?能否帮忙解惑?
https://www.workerman.net/plugin/12#%E4%B8%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E9%98%9F%E5%88%97%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E6%B6%88%E8%B4%B9%E8%BF%9B%E7%A8%8B
手册有
多谢,刚刚没有找到这个,我研究一下。
我觉得你可能误会了我的需求。 文档里消费者的队列名是定死的,我需要给消费者匹配多个队列名(一般是场景+id) 比如现在消费者正在处理clr_1的数据,其他clr_1的对列会等待 ——但clr_7的队列不会等clr_1执行完毕
感觉就是手册里说的那样啊,clr_1单独放到一组进程里消费,clr_7在另外一组进程里消费,clr_7的队列不会等clr_1执行完毕
但如果注册了新的用户 9 ,copy一个clr_9的消费者出来,然后重启服务
clr_后面代表用户id?好吧,没想到是按用户id来做队列的
全都是慢查询,如果没办法并行处理的话,瓶颈太明显了。总有几十几百个在等待消费
既然是同样的消费者,为何不把你这个参数放入任务体,由消费者根据参数做对应处理,单队列多个消费进程,SPMC模式
同队列的话,会等待吧? @nitron
消费进程数(count)开高一点,消费进程都在处理的时候,肯定要等待
但很可能接连几个都是clr_1啊,这种情况必须等待
多个clr_1还必须要按先进先出的顺序一个个处理么?
当然,前一个还在更新,后边进来也要等待解锁
如果后一个执行依赖前一个的结果,队列帮不上什么大忙,你这种N个队列去执行的也不靠谱,长耗时任务并行执行的上限约等于CPU核心数,不清楚你的具体业务,没什么好建议
兄弟,最后怎么处理的?可以分享下吗
https://www.workerman.net/plugin/12#%E4%B8%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E9%98%9F%E5%88%97%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E6%B6%88%E8%B4%B9%E8%BF%9B%E7%A8%8B
手册有
多谢,刚刚没有找到这个,我研究一下。
我觉得你可能误会了我的需求。
文档里消费者的队列名是定死的,我需要给消费者匹配多个队列名(一般是场景+id)
比如现在消费者正在处理clr_1的数据,其他clr_1的对列会等待 ——但clr_7的队列不会等clr_1执行完毕
感觉就是手册里说的那样啊,clr_1单独放到一组进程里消费,clr_7在另外一组进程里消费,clr_7的队列不会等clr_1执行完毕
但如果注册了新的用户 9 ,copy一个clr_9的消费者出来,然后重启服务
clr_后面代表用户id?好吧,没想到是按用户id来做队列的
全都是慢查询,如果没办法并行处理的话,瓶颈太明显了。总有几十几百个在等待消费
既然是同样的消费者,为何不把你这个参数放入任务体,由消费者根据参数做对应处理,单队列多个消费进程,SPMC模式
同队列的话,会等待吧? @nitron
消费进程数(count)开高一点,消费进程都在处理的时候,肯定要等待
但很可能接连几个都是clr_1啊,这种情况必须等待
多个clr_1还必须要按先进先出的顺序一个个处理么?
当然,前一个还在更新,后边进来也要等待解锁
如果后一个执行依赖前一个的结果,队列帮不上什么大忙,你这种N个队列去执行的也不靠谱,长耗时任务并行执行的上限约等于CPU核心数,不清楚你的具体业务,没什么好建议
兄弟,最后怎么处理的?可以分享下吗