laravel 队列小技巧
前言
在使用laravel的队列的时候,常常会用到fail,failed,retry,attempts,release等方法,做一个笔记,方便以后查阅。
attempts retry
attempts当前重试次数retry重试次数
每一个attempts都伴随着一个retry,所谓相生相克(不是)
每一个队列job,都会伴随着 attempt
这会告诉我们当前重试次数在第几次.
比如当重试次数大于1次之后,通知运维管理人员。 需要关注一下该队列任务。
比如 直播平台 需要将 .ts 文件 转换成 .mp4 文件,并且上传至 阿里云OSS 进行存储
1 |
|
failed fail
从字面意思上来看,我以为fail是每次重试都会触发,failed是最终失败才会触发。
但经过测试,发现并不是,fail是 主动 去让job失败。
而 failed 是 重试次数结束之后 的去监听job失败。
可以想象这么一个场景,我们的目的是 将 .ts 文件 转换成 .mp4 文件
那需要获取 .ts 文件,但结果文件在存储空间中找不到了!那就应该主动进行 fail 而不是重试之后再失败。
1 | if($this->video->getTsFile() === null) { |
release
队列的主要目的之一是为了消峰填谷,当我们的队列任务过多的时候,可以通过release来延迟任务的执行。
1 | if($transcoder->isBusy()) { |
其他
当队列任务传入的 model 不存在的时候, 可以利用 deleteWhenMissingModels 来进行 对应任务的删除。
传送门1
2
3
4
5
6/**
* Delete the job if its models no longer exist.
*
* @var bool
*/
public $deleteWhenMissingModels = true;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 闲聊茶泡饭!



