阅读(4941) (13)

Laravel 8 队列闭包

2021-07-06 09:25:05 更新

除了将作业类推送到队列之外,你还可以推送闭包到队列。这对于需要在当前请求周期之外执行简单快捷的任务时非常方便。在将闭包推送到队列时,闭包的代码内容是经过加密签名的,因为在传输过程中没有办法进行修改:

$podcast = AppPodcast::find(1);

dispatch(function () use ($podcast) {
    $podcast->publish();
});  

当队列的闭包方法失败重试次数达到上限后仍没有成功运行时,会执行 catch 方法中的闭包:

use Throwable;

dispatch(function () use ($podcast) {
    $podcast->publish();
})->catch(function (Throwable $e) {
    // 任务失败了
});