有没有什么好办法解决队列超时执行自动放弃

注意这里的超时并不是队列本身执行时间太久,而是插入的队列太多,导致后面插入的队列离执行的时间太久,比如说30分钟。那么我想如果超过30分钟还没执行到的队列自动放弃,避免越来越卡

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

另起一个定时任务 将30分钟没执行的队列删了

2年前 评论

增加 worker 数啊

2年前 评论

我看了下文档没看到符合你诉求的信息,不过我认为你可以自己加个逻辑试一下。 首先我们已知队列的投递时间,那么我们也知道超过什么时间就会丢弃掉。那么当队列执行的时候假如已经超时,我们就不希望这个job执行具体的逻辑了,那么直接丢掉。

$this->delete();

2年前 评论

添加队列的时候记录时间,开始执行判断与当前时间的差异是否达到30分钟,达到则跳出这个队列继续下一个,这样就是疯狂删队列数据了

2年前 评论

防止插入队列太多,可以使用原子锁,相同key的队列,根据worker数量你大概估计每分钟可以执行多少个,超过这个阀值的,即未获得锁的,你可以直接删除,或者等待几秒再放回队列

2年前 评论

那就是要有在处理队列的时候知道这条队列插入的时间,你们知道怎么获取吗?

2年前 评论

自动放弃?还能直接主动丢数据了,啥操作。。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!