有没有什么好办法解决队列超时执行自动放弃
注意这里的超时并不是队列本身执行时间太久,而是插入的队列太多,导致后面插入的队列离执行的时间太久,比如说30分钟。那么我想如果超过30分钟还没执行到的队列自动放弃,避免越来越卡
另起一个定时任务 将30分钟没执行的队列删了
增加 worker 数啊
我看了下文档没看到符合你诉求的信息,不过我认为你可以自己加个逻辑试一下。 首先我们已知队列的投递时间,那么我们也知道超过什么时间就会丢弃掉。那么当队列执行的时候假如已经超时,我们就不希望这个job执行具体的逻辑了,那么直接丢掉。
$this->delete();
添加队列的时候记录时间,开始执行判断与当前时间的差异是否达到30分钟,达到则跳出这个队列继续下一个,这样就是疯狂删队列数据了
防止插入队列太多,可以使用原子锁,相同key的队列,根据worker数量你大概估计每分钟可以执行多少个,超过这个阀值的,即未获得锁的,你可以直接删除,或者等待几秒再放回队列
那就是要有在处理队列的时候知道这条队列插入的时间,你们知道怎么获取吗?
自动放弃?还能直接主动丢数据了,啥操作。。