Laravel 的队列延迟分发问题,使用过程中的坑
QUEUE_DRIVER=sync 默认的,使用delay延时队列 不能使用同步的,否则不起作用
以下是原文档:
延迟分发
如果你想延迟执行一个队列中的任务,你可以用任务实例的 delay
方法。例如,我们指定一个任务在分配后 10 分钟内不可被处理:
<?php
namespace App\Http\Controllers;
use Carbon\Carbon;
use App\Jobs\ProcessPodcast;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class PodcastController extends Controller
{
/**
* 保存一个新的播客。
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// 创建播客...
ProcessPodcast::dispatch($podcast)
->delay(Carbon::now()->addMinutes(10));
}
}
{note} Amazon SQS 队列服务最大延迟 15 分钟。
工作链
工作链允许你指定应该按顺序运行的队列列表。如果一个任务失败了,则其余任务将不会运行。你可以在分发任务的时候使用 withChain