redis队列失败造成的堆积,各位是什么处理的

情系轩尼诗

问题描述

模拟了一下多进程队列造成失败后的情况(以最坏情况打算的),发现如果失败会一直堆积,并不会有过期情况,而list的key是拼接
queue_{redis-queue}-failedsend-slow-mail
前面一段还好,只是后面这一段是根据目录命拼接而成,
如果是自行用定时器检测失败任务,是不是每增加一个队列都得增加,
有没有类似think-queue的处理办法,再尝试多次失败后(真·失败)调用“失败方法”
各位是怎么处理的,有无优一些的方案

346 1 1
1个回答

efnic

你理解的是错误的。
以下为官方源码

    /**
     * 待消费的 Queue waiting for consumption
     */
    const QUEUE_WAITING = '{redis-queue}-waiting';

    /**
     * 延时队列 Queue with delayed consumption
     */
    const QUEUE_DELAYED = '{redis-queue}-delayed';

    /**
     * 失败超过重试次数的 Queue with consumption failure
     */
    const QUEUE_FAILED = '{redis-queue}-failed';
  • 情系轩尼诗 2023-09-08

    ...不是,你误解我意思了,我的意思是疯狂失败后,最终都会进入QUEUE_WAITING,那么就让他堆积在那里吗

  • 情系轩尼诗 2023-09-08

    OK,是我打错了,我想说的是failed队列

  • 情系轩尼诗 2023-09-08

    OK,收工,只要加了try就不对堆积,不try就堆积

🔝